Hardhat 指定要使用不同的帐户进行合约交互,您应该使用该connect()方法,并将其传递给签名者,如下所示:
const [owner, addr1] = await ethers.getSigners();
/* ... */
await greeter.connect(addr1).setGreeting("Hello!");
Run Code Online (Sandbox Code Playgroud)
greeter合约实例在哪里。
但是,当我按照他们指定的方式使用签名者时,出现以下错误:
错误:地址或 ENS 名称无效(参数 =“名称”,值 =“<SignerWithAddress 0x59F...34C>”,代码=INVALID_ARGUMENT,版本=contracts/5.6.0)
互联网上说要使用地址,例如本期建议使用类似addr1.address. 但是当我这样做时,会出现以下错误:
VoidSigner 无法签署交易(操作 =“signTransaction”,代码=UNSUPPORTED_OPERATION,版本=abstract-signer/5.6.0)
使用 ethers.js 和 Hardhat 进行合约调用时如何切换签名者/帐户?
我想知道为EIP-712 的嵌套结构数据结构定义 TYPEHASH 的正确方法是什么。我正在尝试这样做,因为我想使用 ECDSA 和哈希结构的 EIP-712 标准检索请求结构的签名者。
这是合同:
import "@openzeppelin/contracts/utils/cryptography/EIP712.sol";
import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";
contract SignatureChecker is EIP712 {
using ECDSA for bytes32;
struct Fee {
address recipient;
uint256 value;
}
struct Request {
address to;
address from;
Fee[] fees;
}
bytes32 public TYPEHASH = keccak256("Request(address to,address from, Fee[] fees)");
constructor() EIP712("SignatureChecker", "1") {}
function verify(
Request calldata request,
bytes calldata signature,
address supposedSigner
) external view returns (bool) {
return recoverAddress(request, signature) == supposedSigner;
}
function recoverAddress(
Request calldata …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Web3 连接到以太坊区块链。当我使用 jupyter Notebook 安装 web3 时,我不断收到 Web3 没有属性的错误。有人可以建议如何连接到以太坊网络吗?
我的代码:
pip install web3
from web3 import Web3, EthereumTesterProvider
w3 = Web3(EthereumTesterProvider())
w3.isConnected()
Run Code Online (Sandbox Code Playgroud)
错误:
AttributeError Traceback (most recent call last)
Input In [29], in <cell line: 3>()
1 from web3 import EthereumTesterProvider
2 w3 = Web3(EthereumTesterProvider())
----> 3 w3.isConnected()
AttributeError: 'Web3' object has no attribute 'isConnected'
Run Code Online (Sandbox Code Playgroud)
我已经尝试了 web3 和 Capital Web3,但仍然收到相同的错误。我也尝试过
w3 = Web3(Web3.EthereumTesterProvider())
Run Code Online (Sandbox Code Playgroud)
但同样的问题。
我最近一直在研究区块链,我遇到了以太坊和chain.com
这两个平台似乎都有助于开发和部署区块链应用程序,其中chain.com专门针对金融公司.
但是,这两者之间究竟有什么区别?
谁能解释它的mapping工作原理以及为什么使用它?像数组一样是项目的集合。我没有扎实的经验,我才刚刚开始。我在solidity官方文档页面上找到了此代码。
pragma solidity ^0.4.11;
Contract CrowdFunding {
// Defines a new type with two fields.
struct Funder {
address addr;
uint amount;
}
struct Campaign {
address beneficiary;
uint fundingGoal;
uint numFunders;
uint amount;
mapping (uint => Funder) funders;
}
uint numCampaigns;
mapping (uint => Campaign) campaigns;
function newCampaign(address beneficiary, uint goal) returns (uint campaignID) {
campaignID = numCampaigns++; // campaignID is return variable
// Creates new struct and saves in storage. We leave out the mapping type. …Run Code Online (Sandbox Code Playgroud) 我在web3版本上1.0.0-beta.27运行私有以太坊区块链用于测试目的.区块链是挖掘并且有两个用户,现在我想要subscribe区块链中的事件并执行一些操作.代码如下:
var Web3 = require("web3");
var ether_port = 'http://localhost:8545'
var web3 = new Web3(new Web3.providers.HttpProvider(ether_port));
web3.eth.subscribe("pendingTransactions"
, function(err, result){
if (err){ console.log(err) }
else { console.log("result: ", result) }
});
Run Code Online (Sandbox Code Playgroud)
我有类似的东西:
Error: The current provider doesn't support subscriptions: HttpProvider
at Subscription.subscribe
Run Code Online (Sandbox Code Playgroud)
从某种意义上说,当我web3.eth.subscribe在node.js控制台上进行操作时,我得到:
{ [Function] call: undefined }
Run Code Online (Sandbox Code Playgroud)
即使web3-1.0.0可以使用函数状态的文档:https://web3js.readthedocs.io/en/1.0/web3-eth-subscribe.html.
那么这只是文档与实际实现不同步的问题吗?我用错了吗?
如果没有实现,那么收听链中变化的最佳方式是什么?例如,如果我想要实时更新用户的帐户余额?这是除了一个函数的天真实现,该函数每隔n几分之一就会对链进行一次调整.
我已经从官方网站下载了Ganache.appx。
不知道如何启动ganache区块链。
当我双击文件时,它要求我选择如下所示?
注意:我有一台Windows 7机器。我在ganache官方网站上找不到Windows特定版本的任何文件。
请让我知道如何在Windows 7机器中启动ganache区块链吗?
以太坊中有“毒气”,而比特币根本不支持循环,我很好奇超级账本结构如何避免无限循环?