问题标签 [smartcontracts]

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 回答
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完全相同。

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

0 投票
1 回答
5391 浏览

solidity - 谁是使用松露部署的合约的所有者?

我正在使用 testrpc 和 truffle 来测试我的合同。

当我输入 时truffle migrate,这会将我的合约部署到 testrpc 网络。

我的问题是,哪个帐户(来自 testrpc 帐户)已用于部署合同。

换句话说,合约所有者是谁?

先感谢您

0 投票
1 回答
865 浏览

ethereum - 以太坊 / Solidity 在 geth 控制台中获取智能合约事件

所以我试图检索我的智能合约生成的事件

但它只返回:

但我想要的是最底部下一张图片中显示的事件(例如Value Changed value:7): 在此处输入图像描述

由于事件显示在 ETH 钱包中,因此应该有一种方法。我只是想要一种在 geth 控制台(或类似的东西)中获取最新事件的方法。感谢您提供的任何帮助,我有点迷失了,并且有一些我一生中最糟糕的谷歌搜索。

0 投票
2 回答
2080 浏览

node.js - 执行“松露初始化”时出错

我是智能合约编程的新手,最近在 Node 上使用 npm 安装了 truffle(版本:6.10.3)当我truffle init第一次运行命令时,我收到了这个错误:

下次我运行时truffle init,我收到了错误:

关于如何解决这个问题的任何想法

0 投票
1 回答
181 浏览

ethereum - 在以太坊区块链中使用代币

我正在编写一个允许人们购买代币的测试应用程序。

我正在从这里调整示例:https ://ethereum.org/token#the-code

以下是我的问题:

  1. 进行购买登记的最佳方式是什么?我假设这可以是一个简单的 Web 界面,可以查询区块链以查看谁购买了什么。

如果这是正确的,这是否意味着在服务器上运行 geth 以获得最新的区块链,然后使用某种 PHP / Javascript 库来经常查询区块链?

  1. 出售代币的最佳方式是什么?这可以通过网络界面完成,还是最好通过以太坊钱包出售?或两者?

  2. 假设我想将令牌拆分为多个部分,如下所示:

A:一个完整​​的token = 1 B:一个完整​​的token的1/10,称为10token C:10token的1/10,称为100token D:100token的1/10,称为1000token

代表这一点的最佳方式是什么?

例如,如果某人拥有一个完整的代币,他们就拥有该代币 100% 的权利。然而,代币的许多部分可能由不同的人拥有,他们将根据他们的份额分享权利。

在视觉上,它看起来像这样:

在此处输入图像描述

如何做到这一点对我来说是一个难题。

0 投票
3 回答
2195 浏览

unit-testing - 用松露直接测试以太坊事件

我发现以下问题用于使用 javascript 在松露中测试事件日志记录:

用松露测试以太坊事件日志

但是 truffle 也支持直接在solidity中编写测试。但是,我找不到任何有关如何可靠地测试事件记录的文档。有人可以帮我吗?

0 投票
1 回答
363 浏览

ethereum - 使用智能合约实现预言机

我正在尝试将智能合约部署到使用 oraclizeAPI.sol 库代码的私有区块链。基本上,智能合约是 oraclize 的一个小实现。

导入不起作用,无论是使用 github 链接还是使用本地导入,solc 编译都因导入而失败。

以下两个都不起作用,合同没有被 solc 正确编译

因此,我采取的下一个方法是将 oraclizeAPI.sol 的代码直接复制到合约代码文件中。现在合同已正确编译,但我每次在部署时都会陷入困境。

错误:

现在这里是区块链的详细信息。

创世纪.json

我目前正在尝试使用 coinbase id 来部署合同。

合约代码:

合约创建代码。

如果您想检查完整的合同代码以及我这样做的方式,请访问此链接。

https://github.com/utkarsh17ife/oraclizeExample/tree/master/contracts_data

或者使用节点的完整实现:

https://github.com/utkarsh17ife/oraclizeExample

是的,我可以使用此设置挖掘其他合约。

如果您需要有关此的更多信息,请发表评论。

0 投票
1 回答
203 浏览

smartcontracts - 在 bigchain 数据库上需要帮助

我有两个问题:

  1. 我可以以某种方式访问​​ bigchain 中的所有块吗,块结构没有“块高度”属性。我们可以通过'block id'来访问block。我需要做的是从创世纪以来的所有区块中获取数据。

  2. Bigchain 数据库文档说我们可以实现智能接触,但仅此而已,谁能解释我们如何做到这一点。

0 投票
0 回答
648 浏览

java - 智能合约部署到 testrpc

我有一份可以编译的合同,并且功能已经过测试。我在 testrpc 上部署它(使用 web3j)但是我收到了一个invalid opcode错误。

我认为它不像 testrpc 输出那么重要Contract created

加载合同没有输出任何异常,但是我无法使用任何功能。谁能帮我理解发生了什么?合同实际上是在 testrpc 上吗?我会对你能给我的任何信息感兴趣。

编辑:使用 web3j 的包装器(自动生成)包装合同。我与包装器交互的实现如下(略微简化)。

}

0 投票
1 回答
566 浏览

token - 以太坊:验证钱包所有权是否可行?

如何验证某人拥有钱包地址?

用例:

  • 钱包所有者向众筹活动的钱包地址捐赠 10 ETH

  • 活动结束后,活动决定提供津贴(类似于 kickstarter)。

  • 如果贡献的钱包所有者有权获得津贴,那么该所有者如何要求该津贴?理想情况下,他们可以提供只有发送方/接收方知道的密钥,但活动只有交易收据和钱包地址,这些都是公开的。

这种众筹露营是否需要启动智能合约?

:-/