我目前正在尝试使用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) 我正在尝试与 进行交互geth,并且我需要创建一个新的存款地址(并能够控制它)。我如何使用 web3.js 来实现这个?
我目前正在 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 客户端设备上本地创建的帐户的私钥,但它引发了此异常。
我哪里错了?我应该在运行交易之前在某个地方注册新创建的帐户吗?我在这里遗漏了一些重要信息吗?
我想在 RSK 网络中发送交易,并在日志中收到此消息: Not enough gas for transaction execution.
我从我的测试环境中获得了气体限制参数,使用web3.eth.estimateGas.
我想在 BNB 中计算 BEP20 代币的价格。我检查了 poocoin 和 pancakeswap 他们如何计算价格。正如我所见,他们通过 web3.js 不断调用 bsc-dataseed,但我还没有找到解决方案。
// Request params
{
"jsonrp": "2.0",
"method": "eth_blockNumber",
"params": [],
"id": 1
}
Run Code Online (Sandbox Code Playgroud)
{
"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) 我正在尝试使用以下代码将 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)
但我收到此错误:
交易错误 …
我正在尝试使用 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) 我正在尝试从我的 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)
我正在与 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)