承諾基於合同附近,靠近錢包,以及瀏覽器的RPC客戶端附近。這是為了促進與幾乎區塊鏈的反應集成,並避免建立錢包和合同的巨大樣板。
文件
view的緩存系統使用NPM:
# You can use any wallet selector version you want
npm install @wpdas/naxios @near-wallet-selector/[email protected]使用紗線:
# You can use any wallet selector version you want
yarn add @wpdas/naxios @near-wallet-selector/[email protected]導入近錢包選擇器樣式。該應用需要它正確渲染錢包選擇器。
import '@near-wallet-selector/modal-ui/styles.css'立即將錢包和/或合同的API放置在適當的位置非常容易。看看:
// web3Api.ts
import naxios from '@wpdas/naxios'
const naxiosInstance = new naxios ( {
rpcNodeUrl : 'https://free.rpc.fastnear.com' , // optional
contractId : CONTRACT_ID ,
network : 'testnet' ,
} )
/**
* NEAR Wallet API (Must be a single instance)
*/
export const walletApi = naxiosInstance . walletApi ( )
// Examples of contract API instance usage
/**
* Contract API
* This is going to use default contractId (CONTRACT_ID)
*/
export const contractApi = naxiosInstance . contractApi ( )
/**
* Another Contract API
*/
export const socialDBcontractApi = naxiosInstance . contractApi ( { contractId : 'v1.social08.testnet' } )
/**
* Greeting Contract API
*/
export const greetingContractApi = naxiosInstance . contractApi ( {
contractId : 'dev-1692221685438-15421910364142' ,
} )
/**
* NEAR RPC API
*/
export const rpcApi = naxiosInstance . rpcApi ( ) 您可以通過調用signInModal()來打開近錢包選擇器模式:
import { walletApi } from './web3Api'
walletApi . signInModal ( ) 默認情況下,Naxios僅使用@近乎牆壁的選擇/我的near-wallet作為連接錢包的一種手段。但是,您可以按以下方式添加其他錢包選擇器:
npm install @near-wallet-selector/ledger @near-wallet-selector/my-near-wallet然後,您可以按照以下方式啟動naxius:
import naxios from '@wpdas/naxios'
import { setupMyNearWallet } from '@near-wallet-selector/my-near-wallet'
import { setupLedger } from '@near-wallet-selector/ledger'
const naxiosInstance = new naxios ( {
contractId : CONTRACT_ID ,
network : 'testnet' , // or mainnet, localnet
walletSelectorModules : [ setupMyNearWallet ( ) , setupLedger ( ) ] ,
} )
/**
* NEAR Wallet API (Must be a single instance)
*/
export const walletApi = naxiosInstance . walletApi ( )在此處查找所有近錢包選擇器:靠近錢包選擇器
view :只讀呼叫以從網絡中檢索信息。它具有以下參數:method :合同的方法名稱。props? :用於合同方法的可選args 。config? :目前,這僅具有useCache道具。當usecache為真時,這將使用未過時的緩存數據,而不是調用合同方法。call :調用一種改變合同狀態的方法。這是應付的。它具有以下參數:method :合同的方法名稱props? :如果您想在交易成功後將用戶帶到特定頁面,則帶有合同方法的可選參數,供應args的使用, gas ,要附加的deposit和callbackUrlcallMultiple :調用多種改變合同狀態的方法。這是應付的,並具有以下參數:transactionsList :交易道具列表。您可以使用buildTransaction(...)來幫助您callbackUrl? :一個頁面,將用戶帶到所有交易成功之後。 accounts :簽名帳戶。accountId :帳戶列表中的主/第一個簽名帳戶ID。contractId ID。initNear :初始化與近區塊鏈的連接。當有任何合同互動時,這將自動稱為。network :當前網絡( testnet , mainnet或localnet )。recentlySignedInWallets :最近在錢包中籤名的5個ID-S。selectedWalletId :選定的錢包IDsignInModal :打開標誌錢包模式。wallet :錢包實例。walletSelector :Walletselector實例。使用view方法是免費的。
import { greetingContractApi } from './web3Api'
// [free]
greetingContractApi . view < string > ( 'get_greeting' ) . then ( ( response ) => console . log ( response ) )您需要為您提出的call方法的每個請求付費。這將更改數據並將其存儲在區塊鏈中。
import { greetingContractApi } from './web3Api'
// Set greeting [payable]
const args : { message : 'Hi there!!!' }
greetingContractApi . call < string | undefined > ( 'set_greeting' , args ) . then ( ( response ) => console . log ( response || 'done!' ) )除了call外,您還需要為提出的每個請求付款。這將更改數據並將其存儲在區塊鏈中。
import { buildTransaction } from '@wpdas/naxios'
import { contractApi } from './web3Api'
// Using the default instance's contract
const transactionA = buildTransaction ( 'set_greeting' , { args : { greeting : 'Hello my dear!' } } )
const transactionB = buildTransaction ( 'set_age' , { args : { age : 22 } } )
// Using diff contract
const transactionC = buildTransaction ( 'update_state' , {
receiverId : 'my-state-contract.testnet' ,
args : { allowed : true } ,
} )
// Optional
const callbackUrl = 'https://my-page.com/callback-success'
// [payable]
contractApi . callMultiple ( [ transactionA , transactionB , transactionC ] , callbackUrl ) . then ( ( ) => console . log ( 'Done!' ) )有兩種緩存系統要使用。它們是Memory Cache和Storage Cache 。
Memory Cache :當應用程序刷新時,將清除其數據僅在內存中。
Storage Cache :即使刷新了瀏覽器選項卡,數據也將保留。數據使用本地存儲持續存在。
實例化緩存時,您需要提供expirationTime (以秒為單位)。這用於知道何時應返回緩存,而不是進行真正的合同調用。高速緩存到期時,對合同進行了真正的呼籲。每個合同的方法都有自己的到期時間。
// web3Api.ts
import naxios , { StorageCache } from '@wpdas/naxios'
// ...
/**
* Cached - Greeting Contract API
*/
export const cachedGreetingContractApi = naxiosInstance . contractApi ( {
contractId : 'dev-1692221685438-15421910364142' ,
cache : new StorageCache ( { expirationTime : 5 * 60 } ) , // 5 minutes
} )然後,要使用緩存的view ,您只需傳遞配置對象,說您要使用緩存的數據即可。
import { cachedGreetingContractApi } from './web3Api'
// Fetch Greetings [free]
const args : { }
const config : { useCache : true }
cachedGreetingContractApi . view < string > ( 'get_greeting' , args , config ) . then ( ( response ) => console . log ( response ) )Naxios還提供了對接近RPC API的訪問權限,因此您可以查詢所需的任何數據。訪問RPC API文檔附近,以了解如何使用它。
import { rpcApi } from './web3Api'
// Viewing account using Near RPC API
rpcApi
. query ( {
request_type : 'view_account' ,
finality : 'final' ,
account_id : 'wendersonpires.near' ,
} )
. then ( ( data ) => console . log ( 'Account Data:' , data ) ) buildTransaction當您需要構建合同的交易主體時, buildTransaction方法很有用,主要是當您要撥打多個合同時。
請參閱此處的參考。
validateNearAddress這用於檢查地址是否有效近地址。
import { validateNearAddress } from '@wpdas/naxios'
console . log ( validateNearAddress ( 'fake.near' ) ) // true
console . log ( validateNearAddress ( 'fake.nears' ) ) // false
console . log ( validateNearAddress ( 'fake.testnet' ) ) // true
console . log ( validateNearAddress ( 'fake' ) ) // false calculateDepositByDataSize計算存儲數據所需的存款。 (每字節〜0.00001n),緩衝區有些額外
import { calculateDepositByDataSize } from '@wpdas/naxios'
const myData = { age : 22 , name : 'user name' }
console . log ( calculateDepositByDataSize ( myData ) ) // 0.00087 Near (not yocto NEAR) isClient簡單的檢查器說這是在服務器還是客戶端上運行的。
import { isClient } from '@wpdas/naxios'
if ( isClient ( ) ) {
console . log ( 'Hi from client' )
} else {
console . log ( 'Hi from server' )
} 隨意打開問題或提取請求。對於重大更改,請先開設一個問題,以討論您想更改的內容。