是否有可能从主ethereum区块链上签一份合同,并将其应用于我与ethereumj的私人ethereum网络上?
我想做的是,在不改变区块链和消耗汽油的情况下,用一些投入运行一份合同。
有什么线索吗?
发布于 2017-11-06 19:17:53
Ethereumj提供了一个名为StandAloneBlockchain.java的类。您可以在使用这里时看到它。
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。因此,您将了解真正的事务在网络上的行为。
您可以通过在执行事务之前和之后检查余额来做到这一点。下面的代码断言发送了一个金额;但是,您可以对帐户余额进行更详细的检查,以了解交易成本的大小。
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类对于单元测试您的稳固性契约也很有用。
如果你需要澄清,请留下评论。
https://ethereum.stackexchange.com/questions/30015
复制相似问题