public override BlockChain <DumbAction> TransferAssetInBlock() { BlockChain <DumbAction> chain = base.TransferAssetInBlock(); DumbAction action = new DumbAction(_addr[0], "a", _addr[0], _addr[0], 1); Transaction <DumbAction> tx = Transaction <DumbAction> .Create( chain.GetNextTxNonce(_addr[0]), _keys[0], chain.Genesis.Hash, new[] { action } ); chain.Append( TestUtils.MineNext( chain.Tip, new[] { tx }, protocolVersion: ProtocolVersion ).AttachStateRootHash(chain.StateStore, chain.Policy.BlockAction) ); Assert.Equal( DumbAction.DumbCurrency * 6, chain.GetBalance(_addr[0], DumbAction.DumbCurrency) ); return(chain); }
public override BlockChain <DumbAction> TransferAssetInBlock() { BlockChain <DumbAction> chain = base.TransferAssetInBlock(); DumbAction action = new DumbAction(_addr[0], "a", _addr[0], _addr[0], 1); Transaction <DumbAction> tx = Transaction <DumbAction> .Create( chain.GetNextTxNonce(_addr[0]), _keys[0], chain.Genesis.Hash, new[] { action } ); chain.Append( TestUtils.MineNext( chain.Tip, chain.Policy.GetHashAlgorithm, new[] { tx }, miner: _keys[1].PublicKey, protocolVersion: ProtocolVersion ).Evaluate(_keys[1], chain) ); Assert.Equal( DumbAction.DumbCurrency * 5, chain.GetBalance(_addr[0], DumbAction.DumbCurrency) ); return(chain); }
public async Task InitialBlockDownloadStates() { var minerKey = new PrivateKey(); Swarm <DumbAction> minerSwarm = CreateSwarm(minerKey); Swarm <DumbAction> receiverSwarm = CreateSwarm(); BlockChain <DumbAction> minerChain = minerSwarm.BlockChain; BlockChain <DumbAction> receiverChain = receiverSwarm.BlockChain; var key = new PrivateKey(); var address1 = key.ToAddress(); var address2 = new PrivateKey().ToAddress(); var action = new DumbAction( address1, "foo", transfer: Tuple.Create <Address, Address, BigInteger>(address1, address2, 10)); minerChain.MakeTransaction(key, new[] { action }); await minerChain.MineBlock(minerKey); minerChain.MakeTransaction(key, new[] { new DumbAction(address1, "bar") }); await minerChain.MineBlock(minerKey); minerChain.MakeTransaction(key, new[] { new DumbAction(address1, "baz") }); await minerChain.MineBlock(minerKey); try { await StartAsync(minerSwarm); await receiverSwarm.AddPeersAsync(new[] { minerSwarm.AsPeer }, null); await receiverSwarm.PreloadAsync(); var state = receiverChain.GetState(address1); Assert.Equal((Text)"foo,bar,baz", state); Assert.Equal(minerChain.BlockHashes, receiverChain.BlockHashes); } finally { await StopAsync(minerSwarm); } }