shengbuchao

shengbuchao

web3 js coder

nodejsでETHを送金する

私たちは今回、nodejs を学んで eth トランザクションを送金する方法を学びます。

依存関係のインストール#

基本的な eth 送金には、次のコマンドを実行するだけです。

yarn add web3 ethereumjs-tx --dev

みなさんと同期するために、バージョンを報告します。

"devDependencies": {
  "web3": "^1.6.0"
  "ethereumjs-tx": "^2.1.2"
}

web3 の初期化#

以前と同じように、infura のテストイーサリアム URL を申請します。前のページと同じように web3 を使用しますので、ここではコードを直接見てください。

const Web3 = require('web3')
// const EthereumTx = require('ethereumjs-tx').Transaction

const rpcUrl = "https://goerli.infura.io/v3/あなたの申請したinfuraのアドレス"

const web3Provider = new Web3.providers.HttpProvider(rpcUrl)

const web3 = new Web3(web3Provider)

ETH の送金#

const EthereumTx = require('ethereumjs-tx').Transaction

let currentAddress = '0x3EcAa09DD6B8828607bba4B1d7055Ea1143f8B94'	// 現在使用しているETHアドレス

const start = async () => {
  // 残高を確認してみることもできます
  const balance = await web3.eth.getBalance(currentAddress)
  console.log({balance})
  
  const toAddress = '0xe208D2fB37df02061B78848B83F02b4AD33540e1'
  const privateKey = Buffer.from('あなたのウォレットの秘密鍵', 'hex')
  // 送金額(単位:Wei), web3.utils.toWeiを使用して1EtherをWeiに変換できます
  const amount = web3.utils.toHex(web3.utils.toWei('1', 'ether'))
  const count = await web3.eth.getTransactionCount(currentAddress)
  
  const txParams = {
    from: currentAddress,
    to: toAddress,
    gasPrice: web3.utils.toHex(web3.utils.toWei('10', 'gwei')), // 10 Gwei
    gasLimit: web3.utils.toHex(21000),
    value: amount,
    nonce: web3.utils.toHex(count)
  }
  
  const tx = new EthereumTx(txParams, {
    chain: 'goerli'	// ethereumjs-txのこのバージョンでは、chainを明示的に指定する必要があります。そうしないと、無効な送信者のエラーが発生します
  })
  
  tx.sign(privateKey)	// 署名
  
  // 署名済みのトランザクションを送信する
  web3.eth.sendSignedTransaction('0x' + tx.serialize().toString('hex'))
        .on('transactionHash', console.log)
        .catch(err => console.log({err}))
}
start()

上記の ethereumjs-tx の署名方法では、ethereumjs-commonを使用しています。デフォルトでは次のものがあります:

  • mainnet
  • ropsten
  • rinkeby
  • kovan
  • goerliv1.1.0以降の最終設定)
    これらのチェーンに対しては直接署名できます。他のチェーンの場合は、自分でethereumjs-commonを require する必要があります。
const  Common = require('ethereumjs-common').default
const blockchain = Common.forCustomChain(
    'mainnet', {
        name: 'Fantom Opera',
        networkId: 250,
        chainId: 250
    },
    'petersburg'
)

const tx = new EthereumTx(txParams, {
    common: blockchain
})

tx.sign(privateKey)

実行が成功した場合、transactionHashイベントでハッシュが返されます。このハッシュを使用してトランザクションが成功したかどうかをチェーン上で確認できます。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。