首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用ethereumj对链外合同进行评估

利用ethereumj对链外合同进行评估
EN

Ethereum用户
提问于 2017-11-06 16:53:24
回答 1查看 187关注 0票数 2

是否有可能从主ethereum区块链上签一份合同,并将其应用于我与ethereumj的私人ethereum网络上?

我想做的是,在不改变区块链和消耗汽油的情况下,用一些投入运行一份合同。

有什么线索吗?

EN

回答 1

Ethereum用户

回答已采纳

发布于 2017-11-06 19:17:53

Ethereumj提供了一个名为StandAloneBlockchain.java的类。您可以在使用这里时看到它。

代码语言:javascript
复制
StandaloneBlockchain sb = new StandaloneBlockchain().withAutoblock(true);
SolidityContract a = sb.submitNewContract(
                "contract A {" +
                    "  uint public a;" +
                    "  uint public b;" +
                    "  function A(uint a_, uint b_) {a = a_; b = b_; }" +
                       "}",
                    "A", 555, 777
);

有了这个,您就可以测试预期的结果,而不必实际使用任何实际的ETH/gas。因此,您将了解真正的事务在网络上的行为。

您可以通过在执行事务之前和之后检查余额来做到这一点。下面的代码断言发送了一个金额;但是,您可以对帐户余额进行更详细的检查,以了解交易成本的大小。

代码语言:javascript
复制
BigInteger aliceInitBal = sb.getBlockchain().getRepository().getBalance(alice.getAddress());
BigInteger bobInitBal = sb.getBlockchain().getRepository().getBalance(bob.getAddress());
assert convert(123, ETHER).equals(bobInitBal);

sb.setSender(bob);
sb.sendEther(alice.getAddress(), BigInteger.ONE);

sb.createBlock();

assert convert(123, ETHER).compareTo(sb.getBlockchain().getRepository().getBalance(bob.getAddress())) > 0;
assert aliceInitBal.add(BigInteger.ONE).equals(sb.getBlockchain().getRepository().getBalance(alice.getAddress()));

StandAloneBlockchain.java类对于单元测试您的稳固性契约也很有用。

如果你需要澄清,请留下评论。

票数 2
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/30015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档