标签: web3js

使用 web3js 从交易哈希中获取令牌传输详细信息

在此处输入图片说明

使用 web3js,您如何确定从交易的哈希值中转移了 40000 个代币?

ethereum web3js

8
推荐指数
2
解决办法
8404
查看次数

未处理的拒绝错误:此合同对象尚未设置地址,请先设置一个地址

我目前正在尝试使用Infura通过Web3在我的机器上运行。设置运行node index.js文件时,出现以下错误:

Unhandled rejection Error: This contract object doesn't have address set yet, please set an address first.
    at Object._processExecuteArguments (/Users/Oso.Lu/cryptokitty-miner/node_modules/web3-eth-contract/src/index.js:739:15)
    at Object._executeMethod (/Users/Oso.Lu/cryptokitty-miner/node_modules/web3-eth-contract/src/index.js:760:54


var helpers = require("./helpers.js")

var Web3 = require('web3');
var Tx = require('ethereumjs-tx');

// You should be running a local Eth node or use Infura.
var web3 = new Web3(new Web3.providers.HttpProvider("https://mainnet.infura.io:443"));
var prompt = require('prompt');


var sendingAddress = "********************"  // with your sending ETH address
var pKey = "******************************"; // This will store the corresponding …
Run Code Online (Sandbox Code Playgroud)

ethereum web3js

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

如何使用 web3.js 创建新帐户或地址?

我正在尝试与 进行交互geth,并且我需要创建一个新的存款地址(并能够控制它)。我如何使用 web3.js 来实现这个?

ethereum web3js

7
推荐指数
2
解决办法
2万
查看次数

私人以太坊网络无法识别发件人帐户

我目前正在 Solidity 中开发一个 dApp,并正在开发一个 web3 库来处理与其通信。

我在 web3 中创建新帐户和签署交易的过程中遇到了困难。在继续之前,值得注意的是,我正在运行自己的本地私有区块链(目前使用 Ganache)。

我的代码如下所示:

try{
    let a = web3.eth.accounts.create()
    let dataTx = someContract.methods.someMethod().encodeABI()
    let rawTx = {
        to: someContract._address,
        from: account.address,
        data: dataTx,
        gas: 10000000000
    }


    const transaction = web3.eth.accounts.signTransaction(rawTx, util.toBuffer(account.privateKey))
    web3.eth.sendTransaction(rawTx).then(console.log)
}
catch(e){
    console.log(e)
}
Run Code Online (Sandbox Code Playgroud)

这里的问题是该web3.eth.sendTransaction()方法引发以下异常:

错误:返回错误:无法识别发件人帐户。

我的理解是web3.eth.accounts用于管理本地帐户并web3.eth.personal用于与客户端(例如 Geth)进行通信。我希望保留我的应用程序在 web3 客户端设备上本地创建的帐户的私钥,但它引发了此异常。

我哪里错了?我应该在运行交易之前在某个地方注册新创建的帐户吗?我在这里遗漏了一些重要信息吗?

ethereum solidity web3js

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

您如何估计智能合约调用所需的气体量?

我想在 RSK 网络中发送交易,并在日志中收到此消息: Not enough gas for transaction execution.

我从我的测试环境中获得了气体限制参数,使用web3.eth.estimateGas.

web3js rsk

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

如何获得 BEP20 代币的价格?

我想在 BNB 中计算 BEP20 代币的价格。我检查了 poocoin 和 pancakeswap 他们如何计算价格。正如我所见,他们通过 web3.js 不断调用 bsc-dataseed,但我还没有找到解决方案。

我的调查现状:

  1. 他们不断调用数据种子(webrpc)来获取最新的块号:
// Request params
{
    "jsonrp": "2.0",
    "method": "eth_blockNumber",
    "params": [],
    "id": 1
}
Run Code Online (Sandbox Code Playgroud)
  1. 在他们收到最新的区块后,他们立即使用以下参数开始另一个调用
{
  "jsonrpc": "2.0",
  "id": 53,
  "method": "eth_call",
  "params": [
    {
      "to": "0x1ee38d535d541c55c9dae27b12edf090c608e6fb",
      "data": "0x252dba420000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001c00000000000000000000000000000000000000000000000000000000000003800000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000048000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000580000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006800000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000078000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000880000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000009800000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a800000000000000000000000000000000000000000000000000000000000000b000000000000000000000000000000000000000000000000000000000000000b800000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000000d000000000000000000000000000000000000000000000000000000000000000d800000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000e800000000000000000000000000000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000000f8000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001080000000000000000000000000000000000000000000000000000000000000110000000000000000000000000003ff6c83226cdb10c7a42a2c54c67d63a135ab69000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000040902f1ac0000000000000000000000000000000000000000000000000000000000000000000000000000000003fc20bdafdac6b2ae8f7f5f885f0819c2b968f0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000040902f1ac0000000000000000000000000000000000000000000000000000000000000000000000000000000008b018585d4949ae4714f057b66b8b033408bfa6000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000040902f1ac0000000000000000000000000000000000000000000000000000000000000000000000000000000012c8db147721ac1e3e54e9ff73d99ef0ee4b1725000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000040902f1ac000000000000000000000000000000000000000000000000000000000000000000000000000000001b96b92314c44b159149f7e0303511fb2fc4774f000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000040902f1ac0000000000000000000000000000000000000000000000000000000000000000000000000000000020bcc3b8a0091ddac2d0bc30f68e6cbb97de59cd000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000040902f1ac000000000000000000000000000000000000000000000000000000000000000000000000000000002c5d712cf39eaebc1ef2d1281eb48a70dcd34d49000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000040902f1ac000000000000000000000000000000000000000000000000000000000000000000000000000000003ab77e40340ab084c3e23be8e5a6f7afed9d41dc000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000040902f1ac000000000000000000000000000000000000000000000000000000000000000000000000000000003b872e6b1633f060680cf9c277b43dd1e254e564000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000040902f1ac0000000000000000000000000000000000000000000000000000000000000000000000000000000056c77d59e82f33c712f919d09fceddf49660a829000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000040902f1ac000000000000000000000000000000000000000000000000000000000000000000000000000000006f656513f6e8eae19b6dc30cd372dd6ba4b5543a000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000040902f1ac0000000000000000000000000000000000000000000000000000000000000000000000000000000070d8929d04b60af4fb9b58713ebcf18765ade422000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000040902f1ac000000000000000000000000000000000000000000000000000000000000000000000000000000007246d6ea86d34af343f03cc1eb952a4f98467a4e000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000040902f1ac000000000000000000000000000000000000000000000000000000000000000000000000000000007380e10f5c5f9dff4857de3cf9c39bb16f4c6dcf000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000040902f1ac000000000000000000000000000000000000000000000000000000000000000000000000000000007561eee90e24f3b348e1087a005f78b4c8453524000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000040902f1ac0000000000000000000000000000000000000000000000000000000000000000000000000000000088c4bcf826410a81b58bc9b79a17641b443dc52e000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000040902f1ac0000000000000000000000000000000000000000000000000000000000000000000000000000000092ee07c591c26775b4d31259d5417e00553e857c000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000040902f1ac000000000000000000000000000000000000000000000000000000000000000000000000000000009adc6fb78cefa07e13e9294f150c1e8c1dd566c0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000040902f1ac00000000000000000000000000000000000000000000000000000000000000000000000000000000cc6b11de64dce6e5052a84b67cbbfd210ed530f7000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000040902f1ac00000000000000000000000000000000000000000000000000000000000000000000000000000000d1f12370b2ba1c79838337648f820a87edf5e1e6000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000040902f1ac00000000000000000000000000000000000000000000000000000000000000000000000000000000b3c4217ab2b265bf8c69718d280e3708b5e50577000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000040902f1ac00000000000000000000000000000000000000000000000000000000000000000000000000000000b8875e207ee8096a929d543c9981c9586992eacb000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000040902f1ac00000000000000000000000000000000000000000000000000000000000000000000000000000000c15fa3e22c912a276550f3e5fe3b0deb87b55acd000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000040902f1ac00000000000000000000000000000000000000000000000000000000000000000000000000000000cee09ae86a78ce0cea3a4ea8cced5d41c0468e67000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000040902f1ac00000000000000000000000000000000000000000000000000000000000000000000000000000000d9a0d1f5e02de2403f68bb71a15f8847a854b494000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000040902f1ac00000000000000000000000000000000000000000000000000000000000000000000000000000000e7cc44de50b54906a9c1c48240650be2766481fc000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000040902f1ac00000000000000000000000000000000000000000000000000000000000000000000000000000000fb7deb2236815222113d949d935cca4901531677000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000040902f1ac00000000000000000000000000000000000000000000000000000000000000000000000000000000fa3107bca2ff6db4131bcd62b598cb00d9087f58000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000040902f1ac00000000000000000000000000000000000000000000000000000000"
    },
    "latest"
  ]
}
Run Code Online (Sandbox Code Playgroud)

据我所知,这0x1ee38d535d541c55c9dae27b12edf090c608e6fb是一个包含multicall方法的合同。数据的前 10 个字符 (0x252dba42) 是aggregate方法。但是数据的剩余部分是什么?
这是aggregate方法的合同 ABI :

{
    "constant": true,
    "inputs": [
      {
        "components": [
            {"name": "target","type": "address"},
            {"name": "callData","type": "bytes"}
        ],
        "name": "calls",
        "type": …
Run Code Online (Sandbox Code Playgroud)

node.js ethereum web3js web3-donotuse bep20

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

错误:返回错误:方法 eth_sendTransaction 不存在

我正在尝试使用以下代码将 erc20 代币从合约地址转移到 ETH 地址:

var _from = "from Address";
var contAddress = "contract address";
var _to = "to address";

var _Amount = '50';
var txnObject = {
    "from": _from,
    "to": _to,
    "value": web3.utils.toWei(_Amount, 'ether'),
    // "gas": 21000,         (optional)
    // "gasPrice": 4500000,  (optional)
    // "data": 'For testing' (optional)
    // "nonce": 10           (optional)
}

web3.eth.sendTransaction(txnObject, function (error, result) {
    if (error) {
        console.log("Transaction error", error);
    }
    else {
        var txn_hash = result; //Get transaction hash
        //$('#Tx').text(txn_hash);
        alert(txn_hash);
    }
});
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:

交易错误 …

javascript ethereum web3js erc20

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

提供的地址无效,大小写校验和测试失败

我正在尝试使用 web3 发送合同上的方法。我正在使用 privateKeyToAccount 方法创建一个帐户,但在合同上发送该方法时出现以下错误:

所提供的地址 [object Object] 无效,大小写校验和测试失败,或者它是无法转换的间接 IBAN 地址。

我是不是少了一步?我已经创建了一个 web3 实例并且合约接口可以工作。我附上了下面的部分代码。先谢谢您的帮助。

const web3 = new Web3(
    new Web3.providers.WebsocketProvider(
        'wss://rinkeby.infura.io/ws/v3/<api>'
    )
);

const dummyPrivateKey = '0x38544e1555a3553829219281253d2400fa20ebbd922fdh3918a7s2b53b9e1358';
const accounts = web3.eth.accounts.privateKeyToAccount(dummyPrivateKey);

await contract.methods // add username
    .addMessage(_username, _message)
    .send({ from: accounts });
Run Code Online (Sandbox Code Playgroud)

javascript ethereum smartcontracts web3js

7
推荐指数
2
解决办法
2万
查看次数

MetaMask 与 Coinbase 钱包冲突

我正在尝试从我的 dapp 连接到元掩码。按照文档:https ://docs.metamask.io/guide/getting-started.html#connecting-to-metamask

但是当我调用eth_requestAccounts方法时,它也会打开 coinbase 弹出窗口。

如何解决这个问题?有什么建议么?

ethereum.request({ method: 'eth_requestAccounts' });
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

coinbase-api ethereum web3js metamask

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

如何通过 Phantom 使用 web3js 正确传输 Solana SOL

我正在与 Solana 区块链合作。我正在尝试通过 Phantom 传输 Solana SOL。为此,我使用了在 Stack Overflow 上找到的以下代码:源链接

我已经在 Chrome 中安装了 Phantom。当我运行代码时,它显示错误:

未捕获(承诺中)类型错误:无法读取 null 的属性(读取“toString”)

我认为这行代码导致了上面的错误

console.log("Public key of the emitter: ",provider.publicKey.toString());
Run Code Online (Sandbox Code Playgroud)

这是代码

import * as web3 from '@solana/web3.js';
  import * as splToken from '@solana/spl-token';
  
  const getProvider = async () => {
    if ("solana" in window) {
      const provider = window.solana;
      if (provider.isPhantom) {
        console.log("Is Phantom installed?  ", provider.isPhantom);
        return provider;
      }
    } else {
      window.open("https://www.phantom.app/", "_blank");
    }
  };


  async function transferSOL() {
    // Detecing and storing …
Run Code Online (Sandbox Code Playgroud)

javascript web3js solana

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