标签: ethereum

HardHat:无需编译

当编译安全帽项目时,当它显示Nothing to Compile时。

{
  "name": "HardhAtToken",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@nomiclabs/hardhat-ethers": "^2.0.6",
    "@nomiclabs/hardhat-waffle": "^2.0.3",
    "chai": "^4.3.6",
    "ethereum-waffle": "^3.4.4",
    "ethers": "^5.6.6",
    "hardhat": "^2.9.6-dev.1"
  },
  "dependencies": {
    "glob": "^7.2.0"
  }
}
Run Code Online (Sandbox Code Playgroud)

npm ethereum solidity hardhat

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

如何使用 web3 在服务器端对消息进行签名

我正在使用 Node.js 构建一个去中心化应用程序。我需要 node.js 应用程序从前端接收消息,使用 web3.js 签署消息并将签名发送回前端。

我正在考虑将预定义的私钥作为环境变量传递给 node.js 应用程序。然后使用私钥实例化Web3并调用web3.personal.sign对消息进行签名。我需要在服务器端进行签名过程,所以我不认为使用像 Metamask 这样的客户端钱包是适用的。

我是区块链和 Web3 开发的新手,所以我不确定我的要求是否可行。

cryptography node.js blockchain ethereum web3js

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

在“ethers”中找不到导出“utils”(导入为“utils”)

我试图构建一个可以与区块链交互的网络应用程序,我使用 Brownie 作为 Solidity 框架和 ReactJS。我安装了useDapp来连接我的钱包。但在第一个简单的用法中我得到了这个错误:

编译有问题:

./node_modules/@usedapp/core/dist/esm/src/abi/multicall/constants.js 中的错误 3:29-44

在“ethers”中找不到导出“utils”(导入为“utils”)(可能导出:AbiCoder、AbstractProvider、AbstractSigner、AlchemyProvider、AnkrProvider、BaseContract、BaseWallet、Block、BrowserProvider、CloudflareProvider、ConstructorFragment、Contract、ContractEventPayload、ContractFactory、 ContractTransactionReceipt、ContractTransactionResponse、EnsResolver、ErrorFragment、EtherSymbol、EtherscanProvider、EventFragment、EventLog、FallbackProvider、FeeData、FetchCancelSignal、FetchRequest、FetchResponse、FixedNumber、Fragment、FunctionFragment、HDNodeVoidWallet、HDNodeWallet、索引、InfuraProvider、接口、IpcSocketProvider、JsonRpcApiProvider、JsonRpcProvider、JsonR个人电脑签名者, LangEn、日志、LogDescription、MaxInt256、MaxUint256、MessagePrefix、MinInt256、助记符、N、网络、NonceManager、ParamType、PocketProvider、QuickNodeProvider、结果、签名、SigningKey、SocketProvider、事务、TransactionDescription、TransactionReceipt、TransactionResponse、类型、TypedDataEncoder、Utf8ErrorFuncs、 VoidSigner、钱包、WebSocketProvider、WeiPerEther、Wordlist、WordlistOwl、WordlistOwlA、ZeroAddress、ZeroHash、accessListify、断言、assertArgument、assertArgumentCount、assertNormalize、assertPrivate、checkResultErrors、computeAddress、computeHmac、concat、dataLength、dataSlice、decodeBase58、decodeBase64、decodeBytes32String、decodeRlp、解密CrowdsaleJson、decryptKeystoreJson、decryptKeystoreJsonSync、defaultPath、defineProperties、dnsEncode、encodeBase58、encodeBase64、encodeBytes32String、encodeRlp、encryptKeystoreJson、encryptKeystoreJsonSync、ensNormalize、以太、formatEther、formatUnits、fromTwos、getAccountPath、getAddress、getBigInt、getBytes、getBytesCopy、getCreate2Address、获取创建地址、获取默认提供者、 getIcapAddress、getNumber、getUint、hashMessage、hexlify、id、isAddress、isAddressable、isBytesLike、isCallException、isCrowdsaleJson、isError、isHexString、isKeystoreJson、isValidName、keccak256、锁、makeError、掩码、namehash、parseEther、parseUnits、pbkdf2、randomBytes、recoverAddress、解决地址,ripemd160,scrypt,scryptSync,sha256,sha512,solidityPacked,solidityPackedKeccak256,solidityPackedSha256,stripZerosLeft,toBeArray,toBeHex,toBigInt,toNumber,toQuantity,toTwos,toUtf8Bytes,toUtf8CodePoints,toUtf8String,verifyMessage,版本,zeroPadBytes,零填充值)

./node_modules/@usedapp/core/dist/esm/src/abi/multicall2/constants.js 中的错误 3:29-44

在“ethers”中找不到导出“utils”(导入为“utils”)(可能导出:AbiCoder、AbstractProvider、AbstractSigner、AlchemyProvider、AnkrProvider、BaseContract、BaseWallet、Block、BrowserProvider、CloudflareProvider、ConstructorFragment、Contract、ContractEventPayload、ContractFactory、 ContractTransactionReceipt、ContractTransactionResponse、EnsResolver、ErrorFragment、EtherSymbol、EtherscanProvider、EventFragment、EventLog、FallbackProvider、FeeData、FetchCancelSignal、FetchRequest、FetchResponse、FixedNumber、Fragment、FunctionFragment、HDNodeVoidWallet、HDNodeWallet、索引、InfuraProvider、接口、IpcSocketProvider、JsonRpcApiProvider、JsonRpcProvider、JsonR个人电脑签名者, LangEn、日志、LogDescription、MaxInt256、MaxUint256、MessagePrefix、MinInt256、助记符、N、网络、NonceManager、ParamType、PocketProvider、QuickNodeProvider、结果、签名、SigningKey、SocketProvider、事务、TransactionDescription、TransactionReceipt、TransactionResponse、类型、TypedDataEncoder、Utf8ErrorFuncs、 VoidSigner、钱包、WebSocketProvider、WeiPerEther、Wordlist、WordlistOwl、WordlistOwlA、ZeroAddress、ZeroHash、accessListify、断言、assertArgument、assertArgumentCount、assertNormalize、assertPrivate、checkResultErrors、computeAddress、computeHmac、concat、dataLength、dataSlice、decodeBase58、decodeBase64、decodeBytes32String、decodeRlp、解密CrowdsaleJson、decryptKeystoreJson、decryptKeystoreJsonSync、defaultPath、defineProperties、dnsEncode、encodeBase58、encodeBase64、encodeBytes32String、encodeRlp、encryptKeystoreJson、encryptKeystoreJsonSync、ensNormalize、以太、formatEther、formatUnits、fromTwos、getAccountPath、getAddress、getBigInt、getBytes、getBytesCopy、getCreate2Address、获取创建地址、获取默认提供者、 getIcapAddress、getNumber、getUint、hashMessage、hexlify、id、isAddress、isAddressable、isBytesLike、isCallException、isCrowdsaleJson、isError、isHexString、isKeystoreJson、isValidName、keccak256、锁、makeError、掩码、namehash、parseEther、parseUnits、pbkdf2、randomBytes、recoverAddress、解决地址,ripemd160,scrypt,scryptSync,sha256,sha512,solidityPacked,solidityPackedKeccak256,solidityPackedSha256,stripZerosLeft,toBeArray,toBeHex,toBigInt,toNumber,toQuantity,toTwos,toUtf8Bytes,toUtf8CodePoints,toUtf8String,verifyMessage,版本,zeroPadBytes,零填充值)

./node_modules/@usedapp/core/dist/esm/src/constants/abi/index.js 中的错误 7:18-33

在“ethers”中找不到导出“utils”(导入为“utils”)(可能导出:AbiCoder、AbstractProvider、AbstractSigner、AlchemyProvider、AnkrProvider、BaseContract、BaseWallet、Block、BrowserProvider、CloudflareProvider、ConstructorFragment、Contract、ContractEventPayload、ContractFactory、 ContractTransactionReceipt、ContractTransactionResponse、EnsResolver、ErrorFragment、EtherSymbol、EtherscanProvider、EventFragment、EventLog、FallbackProvider、FeeData、FetchCancelSignal、FetchRequest、FetchResponse、FixedNumber、Fragment、FunctionFragment、HDNodeVoidWallet、HDNodeWallet、索引、InfuraProvider、接口、IpcSocketProvider、JsonRpcApiProvider、JsonRpcProvider、JsonR个人电脑签名者, LangEn、日志、LogDescription、MaxInt256、MaxUint256、MessagePrefix、MinInt256、助记符、N、网络、NonceManager、ParamType、PocketProvider、QuickNodeProvider、结果、签名、SigningKey、SocketProvider、事务、TransactionDescription、TransactionReceipt、TransactionResponse、类型、TypedDataEncoder、Utf8ErrorFuncs、 VoidSigner、钱包、WebSocketProvider、WeiPerEther、Wordlist、WordlistOwl、WordlistOwlA、ZeroAddress、ZeroHash、accessListify、断言、assertArgument、assertArgumentCount、assertNormalize、assertPrivate、checkResultErrors、computeAddress、computeHmac、concat、dataLength、dataSlice、decodeBase58、decodeBase64、decodeBytes32String、decodeRlp、解密CrowdsaleJson、decryptKeystoreJson、decryptKeystoreJsonSync、defaultPath、defineProperties、dnsEncode、encodeBase58、encodeBase64、encodeBytes32String、encodeRlp、encryptKeystoreJson、encryptKeystoreJsonSync、ensNormalize、以太、formatEther、formatUnits、fromTwos、getAccountPath、getAddress、getBigInt、getBytes、getBytesCopy、getCreate2Address、获取创建地址、获取默认提供者、 getIcapAddress、getNumber、getUint、hashMessage、hexlify、id、isAddress、isAddressable、isBytesLike、isCallException、isCrowdsaleJson、isError、isHexString、isKeystoreJson、isValidName、keccak256、锁、makeError、掩码、namehash、parseEther、parseUnits、pbkdf2、randomBytes、recoverAddress、解决地址,ripemd160,scrypt,scryptSync,sha256,sha512,solidityPacked,solidityPackedKeccak256,solidityPackedSha256,stripZerosLeft,toBeArray,toBeHex,toBigInt,toNumber,toQuantity,toTwos,toUtf8Bytes,toUtf8CodePoints,toUtf8String,verifyMessage,版本,zeroPadBytes,零填充值)

./node_modules/@usedapp/core/dist/esm/src/helpers/address.js 中的错误 9:29-45

在“ethers”中找不到导出“utils”(导入为“utils”)(可能导出:AbiCoder、AbstractProvider、AbstractSigner、AlchemyProvider、AnkrProvider、BaseContract、BaseWallet、Block、BrowserProvider、CloudflareProvider、ConstructorFragment、Contract、ContractEventPayload、ContractFactory、 ContractTransactionReceipt、ContractTransactionResponse、EnsResolver、ErrorFragment、EtherSymbol、EtherscanProvider、EventFragment、EventLog、FallbackProvider、FeeData、FetchCancelSignal、FetchRequest、FetchResponse、FixedNumber、Fragment、FunctionFragment、HDNodeVoidWallet、HDNodeWallet、索引、InfuraProvider、接口、IpcSocketProvider、JsonRpcApiProvider、JsonRpcProvider、JsonR个人电脑签名者, LangEn、日志、LogDescription、MaxInt256、MaxUint256、MessagePrefix、MinInt256、助记符、N、网络、NonceManager、ParamType、PocketProvider、QuickNodeProvider、结果、签名、SigningKey、SocketProvider、事务、TransactionDescription、TransactionReceipt、TransactionResponse、类型、TypedDataEncoder、Utf8ErrorFuncs、 VoidSigner、钱包、WebSocketProvider、WeiPerEther、Wordlist、WordlistOwl、WordlistOwlA、ZeroAddress、ZeroHash、accessListify、断言、assertArgument、assertArgumentCount、assertNormalize、assertPrivate、checkResultErrors、computeAddress、computeHmac、concat、dataLength、dataSlice、decodeBase58、decodeBase64、decodeBytes32String、decodeRlp、解密CrowdsaleJson、decryptKeystoreJson、decryptKeystoreJsonSync、defaultPath、defineProperties、dnsEncode、encodeBase58、encodeBase64、encodeBytes32String、encodeRlp、encryptKeystoreJson、encryptKeystoreJsonSync、ensNormalize、以太、formatEther、formatUnits、fromTwos、getAccountPath、getAddress、getBigInt、getBytes、getBytesCopy、getCreate2Address、获取创建地址、获取默认提供者、 getIcapAddress、getNumber、getUint、hashMessage、hexlify、id、isAddress、isAddressable、isBytesLike、isCallException、isCrowdsaleJson、isError、isHexString、isKeystoreJson、isValidName、keccak256、锁、makeError、掩码、namehash、parseEther、parseUnits、pbkdf2、randomBytes、recoverAddress、解决地址,ripemd160,scrypt,scryptSync,sha256,sha512,solidityPacked,solidityPackedKeccak256,solidityPackedSha256,stripZerosLeft,toBeArray,toBeHex,toBigInt,toNumber,toQuantity,toTwos,toUtf8Bytes,toUtf8CodePoints,toUtf8String,verifyMessage,版本,zeroPadBytes,零填充值)

这是我的 App.tsx 文件:

import React from 'react';
import logo from './logo.svg';
import './App.css';
import { DAppProvider, ChainId } from "@usedapp/core";


function App() {
  return (
    <DAppProvider config={{ supportedChains: [ChainId.Goerli] }}>
      <div>
        Hello!
      </div>
    </DAppProvider>
  );
}

export default App; …
Run Code Online (Sandbox Code Playgroud)

typescript reactjs ethereum ethers.js usedapp

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

如何修复 Solidity 中的“部署时迁移遇到无效操作码”错误?

“迁移”在部署时遇到无效的操作码。尝试:

  • 验证您的构造函数参数是否满足所有断言条件。
  • 验证构造函数代码不会越界访问数组。
  • 将原因字符串添加到断言语句中。出现这个错误如何解决

我的migration.sol代码

    // SPDX-License-Identifier: UNLICENSED

    //the version of solidity that is compatible

    pragma solidity ^0.8.0;
    contract Migrations {
      address public owner = msg.sender;
      uint public last_completed_migration;

      modifier restricted() {
        require(
          msg.sender == owner,
          "This function is restricted to the contract's owner"
        );
        _;
      }

      function setCompleted(uint completed) public restricted {
        last_completed_migration = completed;
      }
    }
Run Code Online (Sandbox Code Playgroud)

我的松露 config.js 文件

    // SPDX-License-Identifier: UNLICENSED

    //the version of solidity that is compatible

    pragma solidity ^0.8.0;
    contract Migrations {
      address public owner …
Run Code Online (Sandbox Code Playgroud)

javascript blockchain ethereum solidity

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

无法更改合同中的状态变量

我正在使用Truffle和TestRPC开发以太坊合约.但是我无法获得要更新的状态变量.我认为可能只是因为我太早访问它,但其他示例测试似乎工作得很好并且非常相似.

我已经将合同减少到最简单的可能性:

pragma solidity ^0.4.11;

contract Adder {

    uint public total;

    function add(uint amount) {
        total += amount;
    }

    function getTotal() returns(uint){
        return total;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的考验:

var Adder = artifacts.require("./Adder.sol");

contract('Adder', accounts => {
  it("should start with 0", () =>
    Adder.deployed()
      .then(instance => instance.getTotal.call())
      .then(total => assert.equal(total.toNumber(), 0))
  );

  it("should increase the total as amounts are added", () =>
    Adder.deployed()
      .then(instance => instance.add.call(10)
        .then(() => instance.getTotal.call())
        .then(total => assert.equal(total.toNumber(), 10))
      )
  );

});
Run Code Online (Sandbox Code Playgroud)

第一次测试通过了.但第二次测试失败,因为getTotal仍然返回0.

ethereum solidity truffle

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

如何解码(非常大的值)十六进制字符串到十进制?

我试图解码类似于以下格式的十六进制字符串:

0x00000000000000000000000000000000000000000000000bf97e2a21966df7fe
Run Code Online (Sandbox Code Playgroud)

我能够使用在线计算器对其进行解码.应该是正确的解码数字220892037897060743166.

但是,当我尝试使用python使用以下代码对其进行解码时,它会返回错误:

"0x00000000000000000000000000000000000000000000000bf97e2a21966df7fe".decode("hex")

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-32-1cf86ff46cbc> in <module>()
      9 key=keyarr[0]
     10 
---> 11 "0x00000000000000000000000000000000000000000000000bf97e2a21966df7fe".decode("hex")

/usr/local/Cellar/python/2.7.13_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/encodings/hex_codec.py in hex_decode(input, errors)
     40     """
     41     assert errors == 'strict'
---> 42     output = binascii.a2b_hex(input)
     43     return (output, len(input))
     44 

TypeError: Non-hexadecimal digit found
Run Code Online (Sandbox Code Playgroud)

然后我删除了十六进制数字前面的0x并再次尝试:

"00000000000000000000000000000000000000000000000bf97e2a21966df7fe".decode("hex")
Run Code Online (Sandbox Code Playgroud)

然后输出成为:

'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\xf9~*!\x96m\xf7\xfe'
Run Code Online (Sandbox Code Playgroud)

我实际上不明白输出...

如果您想知道这些数字来自何处,它们来自以太坊区块链(ERC20)令牌.

python hex blockchain ethereum

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

如何检测将在Web3js中失败的事务

我最近刚刚完成了与Remix IDE的一项相当复杂的合同的工作。我现在将web3附加到前端,但是当我调用应该失败的函数时,它们仍会在Metamask上通过。

在Remix中测试我的合同时,我经常会单击并调用某些包含要求语句的函数,这些语句我知道仅能确认正确记录了合同状态。Remix没有将事务发送到metamask,而是输出了一条错误消息,我也想自己处理事务错误。

我如何检查我的合同通话以查看是否会失败。我必须使用预测气体的方法并以这种方式进行检测吗?如果可以,怎么办?我当前的代码如下:

contract.callFunction(function(error, result) {
    if (!error) alert(result);
    else alert(error);
}
Run Code Online (Sandbox Code Playgroud)

上面的代码捕获了拒绝元掩码确认为错误,但是应该失败的事务将通过设置了极高的气体限制的元掩码进入。函数callFunction在合同中,不带参数,但对区块链有影响,因此需要交易。该函数的第一行是“ require(state == 1);”。并且我目前将合同设置为状态2,因此我希望交易失败,我只想检测到交易失败。

ethereum solidity web3js web3-donotuse

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

实体错误:位置JSON中出现意外的令牌h

嘿,我正在开发一个简单的关于稳定性的智能合约,但遇到了麻烦。每次尝试运行setWord函数时,我都会收到一条错误消息:“交易到HelloWorldContract.setWord错误:编码参数错误:SyntaxError:JSON中位置2处的标记h异常”这可能是什么问题?

pragma solidity ^0.4.0;
contract HelloWorldContract{
string word = "Hello World";
address issuer;
function HelloWorldContract(){
    issuer = msg.sender;    
}
function getWord() constant returns(string) {
    return word;
}
function setWord(string newWord) returns(string) {
    if(issuer != msg.sender){
        return "this is not the creator!";
    }
    else{
     word = newWord;
     return "this is the creator!";
    }
}
}
Run Code Online (Sandbox Code Playgroud)

javascript json ethereum solidity

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

如何知道映射表中是否存在特定值?

我有一个映射表,其中将多个哈希存储到该表中。我想做的是让用户使用setinstructors()函数添加另一个哈希,然后尝试查看映射表中是否已经存在相同的哈希。如果表中已经存在相同的哈希,则应返回true,否则返回false。这是我的代码:

pragma solidity ^0.4.18;

contract Hash{
bytes32 comphash;

struct hashstruct{
bytes32 fhash;

}
mapping (uint => hashstruct) hashstructs;
uint[] public hashAccts;



function setinstructor(uint _uint,string _fhash) public {
      var a = hashstructs[_uint];
   a.fhash = sha256(_fhash);  
     hashAccts.push(_uint) -1;


}



function getInstructor(uint ins) view public returns (bytes32) {
    return (hashstructs[ins].fhash);
}

   function count() view public returns (uint) {
    return hashAccts.length;
}



function setinstructors(string _comphash) public {
    comphash = sha256(_comphash);

}

function getInstructors() public constant returns (bytes32) {
    return (comphash);
}



}
Run Code Online (Sandbox Code Playgroud)

ethereum solidity smartcontracts

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

以太坊vs Hyperledger Fabric

我目前正在进行一个项目,该项目将以太坊等公共区块链与Hyperledger Fabric等财团区块链进行比较。

我将在两个平台上设计和实施智能合约,以衡量其交易速度和成本。

将对其他内容进行比较,例如隐私,潜在的可伸缩性,治理和共识协议。

希望在Solidity中编写Eth智能合约,在Golang中编写Fabric。我对此的经验极少,因此我只想实现基本的合同合同,在两个平台上执行多个合同并进行比较。

有没有办法对模拟真实事物的智能合约进行虚拟运行?

blockchain ethereum smartcontracts hyperledger-fabric

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