Exemplo n.º 1
0
        public void Init()
        {
            // Deploy native contracts
            var block = new Network.P2P.Payloads.Block()
            {
                Index         = 0,
                ConsensusData = new Network.P2P.Payloads.ConsensusData(),
                Transactions  = new Network.P2P.Payloads.Transaction[0],
                Witness       = new Network.P2P.Payloads.Witness()
                {
                    InvocationScript   = new byte[0],
                    VerificationScript = Contract.CreateSignatureRedeemScript(ECPoint.FromBytes(pubKey, ECCurve.Secp256k1))
                },
                NextConsensus = UInt160.Zero,
                MerkleRoot    = UInt256.Zero,
                PrevHash      = UInt256.Zero
            };

            _engine = new TestEngine(TriggerType.Application, block);
            ((TestSnapshot)_engine.Snapshot).SetPersistingBlock(block);

            using (var script = new ScriptBuilder())
            {
                script.EmitSysCall(TestEngine.Native_Deploy);
                _engine.LoadScript(script.ToArray());
                Assert.AreEqual(VMState.HALT, _engine.Execute());
            }

            _engine.Reset();
            _engine.AddEntryScript("./TestClasses/Contract_Native.cs");
        }
Exemplo n.º 2
0
        public void Init()
        {
            // Deploy native contracts
            var block = new Network.P2P.Payloads.Block()
            {
                Index         = 0,
                ConsensusData = new Network.P2P.Payloads.ConsensusData(),
                Transactions  = new Network.P2P.Payloads.Transaction[0],
                Witness       = new Network.P2P.Payloads.Witness()
                {
                    InvocationScript   = new byte[0],
                    VerificationScript = Contract.CreateSignatureRedeemScript(ECPoint.FromBytes(pubKey, ECCurve.Secp256k1))
                },
                NextConsensus = UInt160.Zero,
                MerkleRoot    = UInt256.Zero,
                PrevHash      = UInt256.Zero
            };

            _engine = new TestEngine(TriggerType.Application, block);
            ((TestSnapshot)_engine.Snapshot).SetPersistingBlock(block);
            _engine.Snapshot.DeployNativeContracts();

            _engine.Reset();
            _engine.AddEntryScript("./TestClasses/Contract_Native.cs");
        }
Exemplo n.º 3
0
        public void Init()
        {
            var _        = TestBlockchain.TheNeoSystem;
            var snapshot = Blockchain.Singleton.GetSnapshot();

            _block  = Blockchain.GenesisBlock;
            _engine = new TestEngine(snapshot: snapshot.Clone());
            _engine.AddEntryScript("./TestClasses/Contract_Blockchain.cs");
        }
        public void Init()
        {
            _store = TestBlockchain.GetStore();
            var snapshot = _store.GetSnapshot();

            _block  = Blockchain.GenesisBlock;
            _engine = new TestEngine(snapshot: snapshot);
            _engine.AddEntryScript("./TestClasses/Contract_Blockchain.cs");
        }
        public void Init()
        {
            var _        = TestBlockchain.TheNeoSystem;
            var snapshot = Blockchain.Singleton.GetSnapshot().Clone();

            _block = new Network.P2P.Payloads.Block()
            {
                ConsensusData = new Network.P2P.Payloads.ConsensusData(),
                Index         = 1,
                PrevHash      = Blockchain.GenesisBlock.Hash,
                Witness       = new Network.P2P.Payloads.Witness()
                {
                    InvocationScript = new byte[0], VerificationScript = new byte[0]
                },
                NextConsensus = UInt160.Zero,
                MerkleRoot    = UInt256.Zero,
                Transactions  = new Network.P2P.Payloads.Transaction[]
                {
                    new Network.P2P.Payloads.Transaction()
                    {
                        Attributes = new Network.P2P.Payloads.TransactionAttribute[0],
                        Signers    = new Network.P2P.Payloads.Signer[] { new Network.P2P.Payloads.Signer()
                                                                         {
                                                                             Account = UInt160.Zero
                                                                         } },
                        Witnesses = new Network.P2P.Payloads.Witness[] { },
                        Script    = new byte[0]
                    }
                }
            };

            snapshot.SetPersistingBlock(_block);
            snapshot.BlockHashIndex.GetAndChange().Index = _block.Index;
            snapshot.BlockHashIndex.GetAndChange().Hash  = _block.Hash;
            snapshot.Blocks.Add(_block.Hash, _block.Trim());
            snapshot.Transactions.Add(_block.Transactions[0].Hash, new TransactionState()
            {
                BlockIndex  = _block.Index,
                Transaction = _block.Transactions[0],
                VMState     = VMState.HALT
            });

            // Fake header_index

            var header_index = (List <UInt256>)Blockchain.Singleton.GetType()
                               .GetField("header_index", BindingFlags.Instance | BindingFlags.NonPublic)
                               .GetValue(Blockchain.Singleton);

            header_index.Add(_block.Hash);

            _engine = new TestEngine(snapshot: snapshot);
            _engine.AddEntryScript("./TestClasses/Contract_Blockchain.cs");
        }
Exemplo n.º 6
0
        public void Init()
        {
            // Deploy native contracts
            var block = new Network.P2P.Payloads.Block()
            {
                Header = new Header()
                {
                    Index   = 0,
                    Witness = new Network.P2P.Payloads.Witness()
                    {
                        InvocationScript   = System.Array.Empty <byte>(),
                        VerificationScript = Contract.CreateSignatureRedeemScript(ECPoint.FromBytes(pubKey, ECCurve.Secp256k1))
                    },
                    NextConsensus = UInt160.Zero,
                    MerkleRoot    = UInt256.Zero,
                    PrevHash      = UInt256.Zero
                },
                Transactions = new Network.P2P.Payloads.Transaction[0],
            };

            _engine = new TestEngine(TriggerType.Application, block, new TestDataCache(block));
            _engine.Reset();
            _engine.AddEntryScript("./TestClasses/Contract_Native.cs");
        }