问题标签 [solidity]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1418 浏览

function - 从其他合约中调用函数solidity

我正在尝试从 Maker 合约创建 Taker 合约的新实例并向其发送一些价值。

然后稍后我想从 Taker 合约中将一个值发送回 Maker 合约

但是它找不到名为“change”的函数并引发错误。我能想到的唯一可能的解释是它们需要异步执行但同时编译。

(这在 Browser Solidity、Ethereum Studio 和 Truffle 中进行了测试 - 都带有相同的错误消息)

下面是完整的代码。

对于如何解决这个问题(和或参考)的任何建议,我将不胜感激。

谢谢!

0 投票
1 回答
121 浏览

javascript - 错误:发送后无法设置标头。来自调用智能合约函数

我写了一个智能合约来创建简单的数据库。它包含多个功能,当我第一次点击 REST api 时,它给了我正确的输出,但在进一步点击时,它会使节点服务器崩溃并显示一条消息——

F:\project\blockchain\node_modules\solc\soljson.js:1 (function (exports, require, module, __filename, __dirname) { var Module;if(!Module)Module=(typeof Module!=="undefined"? Module:null)||{};var moduleOverrides={};for(var key in Module){if(Module .hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var ENVIRONMENT_IS_WEB=typeof window= =="object";var ENVIRONMENT_IS_WORKER=typeof importScripts==="function";var ENVIRONMENT_IS_NODE=进程类型==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&! ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(EN VIRONMENT_IS_NODE){if(!Module["print"])Module["print"]=function print(x){process["stdout"].write(x+"\n")};if(!Module["printErr"])Module["printErr"]=function printErr(x){process["stderr"].write (x+"\n")}; var nodeFS=require("fs");var nodePath=require("path");Module["read"]=function read(filename,binary){filename=nodePath"normalize";var ret=nodeFS["readFileSync" ](文件

错误:发送后无法设置标头。在 ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:344:11) 在 ServerResponse.header (F:\project\blockchain\node_modules\express\lib\response.js:725:10) 在 ServerResponse.send (F:\project \blockchain\node_modules\express\lib\response.js:170:12) 在 ServerResponse.json (F:\project\blockchain\node_modules\express\lib\response.js:256:15) 在 F:\project\blockchain \BlockchainDB\users\userFunction.js:37:47 at F:\project\blockchain\node_modules\web3\lib\web3\filter.js:120:21 at Array.forEach (native) at F:\project\blockchain\ node_modules\web3\lib\web3\filter.js:119:32 at Array.forEach (native) at Object.onMessage [作为回调] (F:\project\blockchain\node_modules\web3\lib\web3\filter.js: 117:22)

我的 api 代码

}

请帮我解决这个问题

提前致谢

0 投票
2 回答
2727 浏览

javascript - 在solidity 0.4.6中使用send()函数时合约抛出无效地址

这是我正在尝试的可靠代码。代码的编译工作正常。但是,当我通过 javascript 调用函数 send() 时,它会抛出异常: throw new Error('invalid address');

这是javascript代码

每当代码运行时,它都会抛出无效地址错误并崩溃。

0 投票
2 回答
386 浏览

ethereum - 以太坊(Solidity)编译器输出

我对 Solidity 编译器(和以太坊)非常陌生。我的目标是在区块链上发布一些合约。我正在做这样的简单示例:https ://ethereum.gitbooks.io/frontier-guide/content/compiling_contract.html

但是这一行:

合约 = eth.compile.solidity(source).test

不像示例中那样工作。因为属性“测试”始终不可用。

而不是 .test 它返回键是这样的:

eth 控制台输出

我不明白什么是“/tmp/geth-compile-solidity255557006:test:”。

$geth 版本

版本:1.5.6-不稳定

协议版本:[63 62]

去版本:go1.7.3

0 投票
2 回答
1485 浏览

ethereum - 智能合约区块链历史

智能合约是否有可能查看过去在其上完成的交易,换句话说,智能合约是否有可能查看自成立以来谁向它发送了以太币?

0 投票
1 回答
249 浏览

azure - 无法在 Visual Studio 部署的 Azure 上执行区块链合约

我正在关注 https://mva.microsoft.com/en-us/training-courses/microsoft-blockchain-as-a-service-17104 上的 Microsoft Virtual Academy 区块链教程中的“Solidity in Visual Studio”视频? l=aZrQbG3SD_3206218965。在该视频中,提供的示例程序部署到 Azure 上的 Strato 区块链个人实例。

在部署合约之前,必须运行 bloc 的本地实例。

当我尝试相同的示例时,智能合约被部署并正常启动,并且我能够执行 getter。但是当我尝试设置器时,我的笔记本电脑上的 bloc 崩溃了。这是块输出:

谁能帮我弄清楚为什么 bloc 失败了?我在 Windows 7 上使用带有 Solidity 扩展和 bloc 版本 1.2.2 的 Visual Studio 2015。

0 投票
1 回答
1593 浏览

macos - 我无法在 macOS Sierra 上使用自制软件安装solidity。安装挂起

我试图在我的 Mac 上安装solidity

正如solidity#binary-packages所建议的那样。但是当我尝试brew install solidity安装boost时安装过程卡在这里:

我确实找到了这个brew 挂起线程并尝试修复所有brew doctor给我的东西,并且我安装了最新的命令行工具。我还不能让它工作。有任何想法吗?

0 投票
1 回答
133 浏览

ethereum - How are the ethers sent to smart contract in the IBM example

I was reading the IBM Example about smartSponsor, and there is this following code:

While the function pledge is:

I was looking for "send" or "transfer" functions. But I could not find any. Therefore I was confused how were the ethers sent from the sponsor to the smart contract?

Update:

How did the sender send the ethers? I was expecting something like .transfer(uint256 amount) or .send(uint256 amount). But it seems that there is no such function call?

0 投票
1 回答
123 浏览

blockchain - {from: thesponsor, value: 10000000, gas: 3000000} 是一个 msg 对象吗?

在以太坊智能合约的IBM 示例中,有以下代码:

然而,质押函数不是支付修饰符,它只接受一个参数作为参数:

那么,solidity 是否会自动将 {from: thesponsor, value: 10000000, gas: 3000000} 视为从我的账户转移以太币的 msg 对象?

我只是发现这个功能有点奇怪。如果我写了一个恰好包含关键字“from”和“value”的json对象,我会不小心转移任何资金吗?

0 投票
1 回答
368 浏览

blockchain - 无法通过来自私有区块链中的非合约运行节点的交易获得智能合约中具有公共功能的价值

任何人都可以帮助解决这个问题......让我如此挣扎。

背景:一个私有区块链,所有Geth1.5.9 + Go1.8.1

三个节点。两个矿工。

节点一:Raspberry Pi with Raspbian(没有挖矿,只是作为传感器采集数据)

节点2:Ubuntu14.04云主机

节点 3:Mac OX 10.12

智能合约在节点 2 上运行,我将其设置eth.accounts[0]为智能合约的创建者,这意味着Instance.creator()将是eth.accounts[0]节点 2 上的地址。

代码:

互动还行。

检查通过admin.peers,它们都相互显示两个对等点。

现在,

正常的以太交易一切都很好,没问题。我可以找到ether成功转移,并且可以在block中找到记录。

如果在节点 2 上交付交易,一切都很好,没有问题。交易记录可以在区块中找到,我可以调用Instance.paper()来获取存储在链上的返回值。

如果交易是在节点 1 或节点 3(不是运行智能合约的节点)上交付的,就会发生错误的事情。eth.getTransactionReceipt通过, eth.getTransaction,来查看区块信息eth.getBlock,我们可以发现参数已经成功上链,这意味着这个特定的交易应该已经成功了。当然,我用txpool.statusand来检查这个eth.getBlockTransactionCount("pending"),每个节点上都会有零。但是,如果我尝试调用公共函数Instance.papers()以获取返回值,则会显示" Error: new BigNumber() not a base 16 number:",这意味着合同状态尚未更改。我不认为这是因为这三个节点之间的非同步链问题,因为 transactionHash 和 transactionContent 可以在块内找到并且eth.blockNumber完全相同。

当然,我可以很清楚的基于区块内部是否存在交易记录,数据已经成功上链,但这对我来说很奇怪,我想直接调用公共函数来查找数据放入我的私链。有任何想法吗?