标签: ethereum

无法通过 ethers.js 切换签名者以使用 Hardhat 进行合约交互

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 进行合约调用时如何切换签名者/帐户?

ethereum ethers.js hardhat

3
推荐指数
1
解决办法
3341
查看次数

如何在 Solidity 中使用嵌套结构为 EIP712 类型数据签名定义 TYPEHASH?

我想知道为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)

ethereum solidity

3
推荐指数
1
解决办法
1202
查看次数

“Web3”对象没有属性“isConnected”

我正在尝试使用 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)

但同样的问题。

python ethereum jupyter-notebook web3py

3
推荐指数
1
解决办法
3563
查看次数

如何获取或验证合同的源代码?

在以太坊找到合同是微不足道的.一旦发现,它很容易使用.但是我如何找出合同的真正含义呢?如何验证将执行哪些代码?

ethereum

2
推荐指数
1
解决办法
1058
查看次数

以太坊和连锁店有什么区别?

我最近一直在研究区块链,我遇到了以太坊和chain.com

这两个平台似乎都有助于开发和部署区块链应用程序,其中chain.com专门针对金融公司.

但是,这两者之间究竟有什么区别?

chain blockchain ethereum

2
推荐指数
1
解决办法
980
查看次数

气体与超级面料?

对于以太坊,天然气是一种反拒绝服务措施.Hyperledger Fabric中的等价物是什么,以避免滥用链码调用事务(INVOKE)?NVP是否应该检查此滥用行为?

gnu-assembler ethereum hyperledger hyperledger-fabric

2
推荐指数
1
解决办法
1145
查看次数

映射如何可靠地工作,并类似于其他流行语言中的另一个概念进行映射

谁能解释它的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)

mapping blockchain ethereum solidity

2
推荐指数
1
解决办法
1735
查看次数

web3.eth.subscribe未针对web3版本1.0.0-beta.27实现

我在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.subscribenode.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.

  1. 那么这只是文档与实际实现不同步的问题吗?我用错了吗?

  2. 如果没有实现,那么收听链中变化的最佳方式是什么?例如,如果我想要实时更新用户的帐户余额?这是除了一个函数的天真实现,该函数每隔n几分之一就会对链进行一次调整.

node.js blockchain ethereum web3-donotuse

2
推荐指数
1
解决办法
1697
查看次数

在Windows 7上安装Ganache.appx

我已经从官方网站下载了Ganache.appx。

不知道如何启动ganache区块链。

当我双击文件时,它要求我选择如下所示?

注意:我有一台Windows 7机器。我在ganache官方网站上找不到Windows特定版本的任何文件。

在此处输入图片说明

请让我知道如何在Windows 7机器中启动ganache区块链吗?

blockchain ethereum solidity

2
推荐指数
1
解决办法
3074
查看次数

Hyperledger Fabric如何避免无限循环?

以太坊中有“毒气”,而比特币根本不支持循环,我很好奇超级账本结构如何避免无限循环?

bitcoin blockchain ethereum hyperledger hyperledger-fabric

2
推荐指数
1
解决办法
316
查看次数