Как отправлять эфиры программно без метамаски

Как отправлять эфиры программно без метамаски

9 февраля 2023 г.

Введение

В этом руководстве показано, как передавать эфиры с помощью кода, а не с помощью Metamask. В реализации используется библиотека ethers, которая позволяет JavaScript взаимодействовать с сетями и контрактами Ethereum.

По завершении вы получите более глубокое понимание того, как программно передавать эфиры, и у вас будет рабочий образец для дальнейшего использования.

Отправка эфиров без метамаски

Вот полный код, выполняющий программную транзакцию эфиров между аккаунтами.

https://gist.github.com/Daltonic/bc4f985537de2bd700eef8289a3617a1?embedable=true

Чтобы глубже погрузиться в мир разработки Web3, посмотрите это видео о том, как создать децентрализованную автономную организацию.

https://www.youtube.com/watch?v=Gm442Ihv1GU&embedable=true

Давайте начнем с более подробного изучения кода и понимания того, как он работает.

Клонируйте этот репозиторий в предпочитаемый вами рабочий каталог с помощью приведенной ниже команды. Перед выполнением этих шагов убедитесь, что на вашем локальном компьютере установлены NodeJs и Git Bash.

Затем вам нужно установить пакеты с помощью npm install или yarn install в этом каталоге проекта.

Затем создайте файл в корне этого проекта с именем transactions.js и начните с импорта библиотеки **ethers** из каски:

Затем он определяет две вспомогательные функции, **toWei** и **fromWei**, для преобразования эфира в его наименьшую единицу Wei. Это важно, потому что сеть Ethereum работает в Wei, поэтому мы должны убедиться, что суммы, которые мы отправляем, находятся в Wei.

Эти две функции, **toWei** и **fromWei**, преобразуют эфир в wei. **toWei** преобразует значение в эфире в его эквивалент в wei, а **fromWei** делает обратное. Методы **parseEther** и **formatEther** из модуля **ethers.utils** используются для этого преобразования. .

Функция **sendEthers** предназначена для отправки эфиров из одного кошелька в другой. Он принимает два параметра: **recipientAddress** и **amountInWei**, которые представляют адрес получателя и сумму для отправки соответственно.

Создаются **privateKey** и **provider**. Транзакция подписывается закрытым ключом, и провайдер связывается с сетью Ethereum. С помощью закрытого ключа и провайдера создается экземпляр кошелька.

Методы поставщика getGasPrice и getTransactionCount используются для получения текущего gasPrice и одноразового номера кошелька соответственно. gasPrice представляет собой стоимость одной единицы газа, а одноразовый номер представляет количество транзакций, отправленных из кошелька.

Объект **transaction** создается со следующими параметрами: **to** (recipientAddress), **value** ( количествоInWei), **gasPrice**, **gasLimit** (100000 в шестнадцатеричном формате) и **nonce**. Затем для отправки транзакции используется метод **sendTransaction** экземпляра **wallet**.

Если транзакция прошла успешно, обещание разрешается с помощью хэша транзакции, в противном случае оно отклоняется с ошибкой.

Функция **getBalance** возвращает обещание, которое разрешается балансом кошелька в wei. Функция создает объект JsonRpcProvider и вызывает для него метод **getBalance**.

В качестве аргумента метод принимает адрес кошелька. Метод **getBalance** возвращает обещание, которое разрешается балансом кошелька в wei. Если возникает ошибка, обещание отклоняется с ошибкой.

Посмотрите видео ниже, чтобы узнать, как кодировать смарт-контракт блога в Solidity. Это даст вам преимущество в том, как продвигаться в разработке Web3.

https://www.youtube.com/watch?v=UbidE-tAibk&embedable =правда

async function main() {
  // the rest of the codes goes in here
}

Функция **main** предназначена для передачи эфиров.

;[sender, receiver] = await ethers.getSigners()
const amountInWei = toWei(4.7)

console.log('n')
let balance = await getBalance(sender.address)
console.log('Sender balance before transfer: ', fromWei(balance))
balance = await getBalance(receiver.address)
console.log('Receiver balance before transfer: ', fromWei(balance))
console.log('n')

Метод **ethers.getSigners** вызывается для получения адресов отправителя и получателя. Отправляемая сумма конвертируется в wei с помощью функции **toWei**.

Баланс отправителя и получателя регистрируется перед переводом путем двойного вызова функции **getBalance** и передачи адресов отправителя и получателя в качестве аргументов.

await sendEthers(receiver.address, amountInWei).then((data) =>
  console.log('Transaction Details: ', data),
)
console.log('n')

Функция **sendEthers** вызывается для инициации передачи эфиров. Функция принимает в качестве аргументов адрес получателя и сумму в wei.

Функция **sendEthers** возвращает обещание, которое разрешается с деталями транзакции. Этот промис зарегистрирован в консоли.

balance = await getBalance(sender.address)
console.log('Sender balance after transfer: ', fromWei(balance))
balance = await getBalance(receiver.address)
console.log('Receiver balance after transfer: ', fromWei(balance))
console.log('n')

Баланс отправителя и получателя снова регистрируется, чтобы показать, что перевод прошел успешно. Функция **getBalance** вызывается дважды, чтобы получить баланс отправителя и получателя после перевода. Результат регистрируется на консоли.

Заключение

В заключение, в этом руководстве показано, как программно отправлять эфиры без использования метамаски.

Предоставленный код демонстрирует использование библиотеки **ethers** в JavaScript для взаимодействия с сетью Ethereum и выполнения программной транзакции эфиров между учетными записями.

Код включает в себя вспомогательные функции для преобразования между эфиром и его наименьшей единицей, вэй, а также функции для отправки эфиров и получения баланса кошелька.

Код также демонстрирует использование закрытых ключей, провайдеров, кошельков, цен на газ, одноразовых номеров и транзакций в Ethereum.

Статья послужила хорошей основой для понимания того, как программно отправлять эфиры, и служит полезным справочником для тех, кто только начинает работать в этой области.

My  latest book

Получите копию моей книги "Захват разработки смарт-контрактов", чтобы получить навыки и знания, необходимые для того, чтобы стать востребованным разработчиком смарт-контрактов.

Не забудьте зарегистрироваться на моем канале, чтобы смотреть различные видео о разработке Web3. Будьте осторожны до нашего следующего урока.

Об авторе

Госпел Дарлингтон – разработчик комплексного блокчейна с 6+ летним опытом работы в индустрии разработки программного обеспечения.

Совмещая разработку программного обеспечения, написание текстов и преподавание, он демонстрирует, как создавать децентрализованные приложения в блокчейн-сетях, совместимых с EVM.

Для получения дополнительной информации о нем посетите и подпишитесь на его страницу в Twitter, Github, LinkedIn или его веб-сайт.


Если вы увлечены разработкой Web3, не забудьте подписаться на мой канал< /strong> для различных обучающих видео. Если вы хотите связаться со мной, ознакомьтесь с моими услугами. р>


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE