Ether

ethers-js 中的簽名者地址屬於誰?

  • February 24, 2022

我在 rinkeby 網路上部署了一個隨機合約(合約地址是 0x38a287C93e2B1Cd50719aEA8D8d33A263554c099),當我像這樣使用 ethers-js 連接到合約時:

const contract = await (await ethers.getContractFactory('Sink'))
                .attach('0x38a287C93e2B1Cd50719aEA8D8d33A263554c099');

let signerAddress = await contract.signer.getAddress();
console.log('signerAddress:', signerAddress);

如果我在程式碼段上方執行,則輸出為:signerAddress: 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 這不是以任何方式連接到我的地址。這是在 etherscan 上:https ://rinkeby.etherscan.io/address/0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 。

這是 ethers-js 選擇的任意地址嗎?我會認為簽署我的行動的地址將是我的。為什麼不是這樣?

這是m/44'/60'/0'/0/0從助記片語派生的第一個地址 () test test test test test test test test test test test junk。當您自己不指定簽名者時,乙太幣可能會使用此助記詞。

如果您希望使用自己的簽名者(您應該這樣做),您可以執行以下操作:

const contract = await ethers.getContractFactory(...);
const contractWithSigner = contract.connect(yourOwnSigner);

您也可以像 web3 js 一樣使用您的私鑰簽名。如果你想簽署你的錢包,那麼你必須提供你的助記詞或私鑰。所以用你的私鑰簽名很容易。例如:

let signWallet = new ethers.Wallet(privateKey,provider);

在這裡,通過提供私鑰和提供者地址(如您的 json rpc url),您可以簽署您的錢包,您將收到類似 在此處輸入圖像描述

看這裡它顯示**“_isSigner”:true,**這意味著它的現在標誌。

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