我有一个结构购买,其中我正在进行一系列付款.但是,当我尝试在我的makePayment方法中添加新的payment数组时,我从solidity编译器返回错误:"内部编译器错误:将类型struct Payment memory []内存复制到尚不支持的存储." 当我将mayment数组更改为storage或时memory,我得到相同的错误.我在下面添加了相关代码.
有可能做我想做的事情吗?我没有看到任何明确说明它在文档中不可能但我也没有看到任何示例正在做我正在尝试做的事情.:|
struct Payment {
address maker;
uint amount;
}
struct Purchase {
uint product_id;
bool complete;
Payment[] payments;
}
Purchase[] purchases;
function makePayment(uint product_id, uint amt, uint purchase_id) returns (bool) {
Payment[] payments;
payments[0] = Payment(address, amt);
purchases[purchase_id] = Purchase(product_id, false, payments);
}
Run Code Online (Sandbox Code Playgroud) 我理解比特币使用区块链技术来维护所有交易的分散分类账.我还阅读了许多帖子,暗指未来区块链技术的应用,我都不清楚这一点.
区块链技术只是一个分散的数据库,对数据进行了共识验证吗?如果是这种情况,数据库肯定会变得太大而无法有效地分散?
为了帮助我理解,有人能指出一个非比特币区块链应用程序的明确例子吗?
提前致谢.
我正在尝试在macosx上开始使用带有节点6.11.1的Ethereum Web3.js
我使用以下命令安装了web3:
npm安装web3
然后我启动这个 - 显然 - 简单的节点命令:
Web3 = require('web3');
好吧,它返回以下错误:
module.js:471
throw err;
^
Error: Cannot find module 'web3-requestManager'
at Function.Module._resolveFilename (module.js:469:15)
at Function.Module._load (module.js:417:25)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/Users/fremente/Dropbox/Influx Design/Web htdocs/ethereum/node_modules/web3/packages/web3-core/src/index.js:26:22)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
Run Code Online (Sandbox Code Playgroud)
看起来它需要一些未随包安装的模块(例如'web3-requestManager').
这是我的package.json
{
"name": "ethereum",
"version": "1.0.0",
"description": "",
"main": "index.js",
"dependencies": {
"ethereumjs-testrpc": "^4.0.1",
"solc": "^0.4.13",
"web3": "^1.0.0-beta2"
},
"devDependencies": {},
"scripts": {
"test": "echo …Run Code Online (Sandbox Code Playgroud) 我正在Azure上的虚拟机上部署私有以太坊区块链(geth).在区块链上部署我的Solidity合同并启动我的NodeJS应用程序后,我能够通过nodejs Loopback App的web apis正常添加数据,一切正常,我可以使用GET apis查看添加的数据.
然而,在1-2-3天(随机)后,我无法检索通过我的GET apis添加的数据,而我仍然能够添加新数据,确认Geth正常运行并且没有中断.
我正在运行geth使用:
geth --datadir ./myDataDir --rpc --networkid 1441 console 2>> myEth.log
Run Code Online (Sandbox Code Playgroud)
myEth.log没有显示任何错误,nodejs日志也是干净的.
eth.syncing显示false哪个网络已同步.
myDataDir文件夹的大小仍然在增加,所以逻辑上数据应该在某处,但它没有显示.
我正在尝试使用npm solc编译可靠性智能合约.我试着遵循不同的例子.链接到示例:https://medium.com/coinmonks/how-to-compile-a-solidity-smart-contract-using-node-js-51ea7c6bf440
我编写了如下代码:
const path = require('path');
const fs = require('fs');
const solc = require('solc');
const helloPath = path.resolve(__dirname, 'contracts', 'hello.sol');
console.log("First" + helloPath);
const source = fs.readFileSync(helloPath, 'UTF-8');
console.log("Second" + source);
console.log(solc.compile(source, 1));
Run Code Online (Sandbox Code Playgroud)
运行上面的代码时出现以下错误.
AssertionError [ERR_ASSERTION]: Invalid callback specified.
at wrapCallback (C:\Users\mouazzamj058\solc_example\node_modules\solc\wrapper.js:16:5)
at runWithReadCallback (C:\Users\mouazzamj058\solc_example\node_modules\solc\wrapper.js:37:42)
at compileStandard (C:\Users\mouazzamj058\solc_example\node_modules\solc\wrapper.js:78:14)
at Object.compileStandardWrapper (C:\Users\mouazzamj058\solc_example\node_modules\solc\wrapper.js:85:14)
at Object.<anonymous> (C:\Users\mouazzamj058\solc_example\example.js:4:19)
at Module._compile (module.js:652:30)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
Run Code Online (Sandbox Code Playgroud)
请帮忙.
\n\nindex.js:1 无法获取多重调用块 [{\xe2\x80\xa6}] 1 错误:发送交易需要签名者(操作=“sendTransaction”,代码=UNSUPPORTED_OPERATION,版本=contracts/5.0.2)
\n
多重调用合约地址 - https://etherscan.io/address/0xeefba1e63905ef1d7acba5a8513c70307c1ce441#writeContract
\n在 Uniswap 界面中工作,但在我的代码中抛出错误,我不知道出了什么问题
\n首先,让我提一下这是一个浏览器内项目,所以我只能使用
<script src="https://cdn.jsdelivr.net/gh/ethereum/web3.js/dist/web3.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
几个月前,我制作了一个 dapp,即使我从未设置过提供程序,它也能正常工作,所以我猜它使用了 MetaMask 提供的提供程序。但是,我在这里使用指南,唯一的问题是以下代码,
<script src="https://cdn.jsdelivr.net/gh/ethereum/web3.js/dist/web3.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
此代码用于在元掩码用户在我的 dapp 上批准元掩码后输出元掩码用户的地址,但是我收到了错误
Uncaught (in promise) TypeError: Cannot read property 'request' of undefined
Run Code Online (Sandbox Code Playgroud)
该错误只是说,如果我必须添加提供程序,我的实际目标是使用元掩码中的提供程序,并允许连接到元掩码,其余功能(例如传输或其他我知道如何处理它们),它只是当我尝试加载页面时,似乎我的问题出现了。
我没有可用的以太节点,也不打算使用nodejs,只有一个显示Metamask地址的html文件,因此使用浏览器内的web3js。
我希望这只是我没有意识到一些简单的事情,因为我似乎找不到现在不能使用 web3js 的原因。
web3库中的web3.eth.getTransaction两种方法有什么区别?web3.eth.getTransactionReceipt我尝试阅读此文档https://web3js.readthedocs.io/en/v1.2.0/web3-eth.html#gettransactionreceipt但我不清楚其中的区别。
我创建了一个基本合同。但不知道提现功能。
我尝试创建一个基本功能,但它不起作用
function withdraw() public {
msg.sender.transfer(address(this).balance);
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试获取 BSC 代币的购买或销售税,但我还没有找到方法。我通过(在本例中为 pancakeswap)查询 DEX router_contract.functions.getAmountsOut(web3.toWei(1, 'Ether'), [ buying_token_address, pair_token]).call(),但我相信这个值不包括代币税。
有谁知道如何计算税金?