Обещание, основанное рядом с контрактом, рядом с кошельком и рядом с клиентом RPC для браузера. Это было разработано, чтобы облегчить интеграцию React с почти блокчейном и избежать огромной паттерной пластины для установки кошелька и сжимания.
Документация
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 ( ) Вы можете открыть ближний кошелек Modal, вызывая signInModal() :
import { walletApi } from './web3Api'
walletApi . signInModal ( ) По умолчанию Naxios использует только @ближний палочек-селектор/my-wallet в качестве средства соединения кошелька. Тем не менее, вы можете добавить другие селекторы кошелька следующим образом:
npm install @near-wallet-selector/ledger @near-wallet-selector/my-near-walletЗатем вы можете начать Наксиус следующим образом:
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 для подключения и callbackUrl если вы хотите перенести пользователя на определенную страницу после того, как транзакция достигнет успеха.callMultiple : вызовите несколько методов, которые изменяют состояние контракта. Это подлежит оплате и имеет следующие параметры:transactionsList : список реквизитов транзакций. Вы можете использовать buildTransaction(...) , чтобы помочь вамcallbackUrl? : Страница, чтобы привлечь пользователя, после того, как все транзакции добились успеха. accounts : подписанные счета.accountId : Main/First Подписанный идентификатор учетной записи в списке учетных записей.contractId : идентификатор контракта.initNear : инициализирует соединение с ближней блокчейном. Это называется автоматически, когда есть какое -либо взаимодействие с контрактом.network : текущая сеть ( testnet , mainnet или localnet ).recentlySignedInWallets : возвращает ID-S 5 недавно подписанных в кошельках.selectedWalletId : выбранное идентификатор кошелькаsignInModal : Откройте модал кошелька Signin.wallet : экземпляр кошелька.walletSelector : экземпляр Walleslector. Использование метода 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 также предоставляет доступ к API ближнего RPC, чтобы вы могли запросить любые данные, которые вы хотите. Посетите документы 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' )
} Не стесняйтесь открывать проблемы или привлекать запросы. Для серьезных изменений, пожалуйста, сначала откройте проблему, чтобы обсудить, что вы хотели бы изменить.