Nodejs

如何為 Ethers Signer 設置私鑰

  • March 9, 2022

我想使用Ethers library呼叫智能合約函式。由於我有自己的節點,我正在使用RPC 連接進行連接,現在我想呼叫一個transfer函式(ERC20 合約的),根據文件要求我使用簽名者:

const provider = new ethers.providers.JsonRpcProvider(NODE_URL)
const signer = provider.getSigner()

// Read-Write; By connecting to a Signer, allows:
// - Everything from Read-Only (except as Signer, not anonymous)
// - Sending transactions for non-constant functions
const erc20_rw = new ethers.Contract(erc20ContractAddress, abi, signer)
const tx = await erc20_rw.transfer(targetAddress, amount)

我的問題是:我應該在哪裡提供我的私鑰?我的意思是 -提供者要求我只提供一個節點 url,並且簽名者由提供者提供。我正在呼叫轉移,這顯然需要我在某個時候提供私鑰。我錯過了什麼?

您可以簡單地替換上面程式碼中的第二行,而是按如下方式定義簽名者:

const signer = new ethers.Wallet(your_private_key_string, provider);

您還可以從助記符而不是私鑰定義簽名者,如下所示:

const account = utils.HDNode.fromMnemonic(your_mnemonic_string).derivePath(`m/44'/60'/0'/0/${your_selected_account}`);

const signer = new Wallet(account, provider);

要使用的帳戶索引在哪裡your_selected_account,從 0 開始。

注意:確保為您使用正確的派生路徑(Ledger、MEW、Metamask、..etc)。

引用自:https://ethereum.stackexchange.com/questions/103502