契約近く、ウォレットの近く、ブラウザ用の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は、ウォレットを接続する手段として、 @wallet-selector/my-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? :トランザクションが成功した後に特定のページにユーザーを連れて行きたい場合は、契約の方法、 gas 、 deposit 、 callbackUrlのargsを備えたオプションのパラメーター。callMultiple :契約の状態を変更する複数の方法を呼び出します。これは支払われ、次のパラメーターがあります。transactionsList :トランザクション小道具のリスト。 buildTransaction(...)を使用して、支援できますcallbackUrl? :すべてのトランザクションが成功した後にユーザーを連れて行くページ。 accounts :署名付きアカウント。accountId :アカウントリストのメイン/最初の署名付きアカウントID。contractId :契約ID。initNear :近くのブロックチェーンへの接続を初期化します。これは、契約相互作用がある場合に自動的に呼ばれます。network :現在のネットワーク( testnet 、 mainnet 、またはlocalnet )。recentlySignedInWallets :最近署名された5のID-Sをウォレットに返します。selectedWalletId :選択されたウォレットIDsignInModal :Signin Wallet Modalを開きます。wallet :ウォレットインスタンス。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!' ) )使用するキャッシュシステムには2種類があります。それらは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' )
} お気軽に問題を開いたり、リクエストを引き出したりしてください。大きな変更については、最初に問題を開いて、何を変えたいかを議論してください。