コード例 #1
0
 public override Task <string> SendTransactionAsync(TransactionInput transactionInput)
 {
     if (transactionInput == null)
     {
         throw new ArgumentNullException(nameof(transactionInput));
     }
     return(SignAndSendTransactionAsync(transactionInput));
 }
コード例 #2
0
        private TransactionInput BuildTransaction <TConstructorParams>(string contractByteCode, string from,
                                                                       HexBigInteger gas, TConstructorParams inputParams)
        {
            var encodedData = _constructorCallEncoder.EncodeRequest(inputParams, contractByteCode);
            var transaction = new TransactionInput(encodedData, gas, from);

            return(transaction);
        }
コード例 #3
0
        public TransactionInput BuildTransaction <TConstructorParams>(string contractByteCode, string from,
                                                                      HexBigInteger gas, HexBigInteger gasPrice, HexBigInteger value, TConstructorParams inputParams)
        {
            var encodedData = _constructorCallEncoder.EncodeRequest(inputParams, contractByteCode);
            var transaction = new TransactionInput(encodedData, null, from, gas, gasPrice, value);

            return(transaction);
        }
コード例 #4
0
        public TransactionInput BuildTransaction <TConstructorParams>(string contractByteCode, string from,
                                                                      TConstructorParams inputParams)
        {
            var encodedData = _constructorCallEncoder.EncodeRequest(inputParams, contractByteCode);
            var transaction = new TransactionInput(encodedData, null, from);

            return(transaction);
        }
コード例 #5
0
 public RpcRequest BuildRequest(TransactionInput input, object id = null)
 {
     if (input == null)
     {
         throw new ArgumentNullException(nameof(input));
     }
     return(base.BuildRequest(id, input));
 }
コード例 #6
0
        public async Task <HexBigInteger> GetGasPriceAsync(TransactionInput transactionInput)
        {
            //if (transactionInput.GasPrice != null) return transactionInput.GasPrice;
            //if (DefaultGasPrice >= 0) return new HexBigInteger(DefaultGasPrice);
            var ethGetGasPrice = new EthGasPrice(Client);

            return(await ethGetGasPrice.SendRequestAsync().ConfigureAwait(false));
        }
コード例 #7
0
        public Task <string> SendTransactionAsync(TFunctionInput functionInput,
                                                  TransactionInput input)
        {
            var encodedInput = GetData(functionInput);

            input.Data = encodedInput;
            return(base.SendTransactionAsync(input));
        }
コード例 #8
0
        public Task <TransactionReceipt> SendTransactionAndWaitForReceiptAsync(TFunctionInput functionInput,
                                                                               TransactionInput input, CancellationTokenSource receiptRequestCancellationToken = null)
        {
            var encodedInput = GetData(functionInput);

            input.Data = encodedInput;
            return(base.SendTransactionAndWaitForReceiptAsync(input, receiptRequestCancellationToken));
        }
コード例 #9
0
 public void Initialise(TransactionInput transactionInput)
 {
     this.AddressTo     = transactionInput.To;
     this.AmountInEther = Web3.Web3.Convert.FromWei(transactionInput.Value.Value);
     this.Data          = transactionInput.Data;
     this.Gas           = (ulong)transactionInput.Gas.Value;
     this.GasPrice      = Web3.Web3.Convert.FromWei(transactionInput.GasPrice.Value, Nethereum.Util.UnitConversion.EthUnit.Gwei);
 }
コード例 #10
0
        public TransactionInput BuildTransaction(string abi, string contractByteCode, string from, HexBigInteger gas, HexBigInteger gasPrice,
                                                 HexBigInteger value, object[] values)
        {
            var encodedData = BuildEncodedData(abi, contractByteCode, values);
            var transaction = new TransactionInput(encodedData, null, from, gas, gasPrice, value);

            return(transaction);
        }
コード例 #11
0
        private TransactionInput BuildTransaction(string abi, string contractByteCode, string from, HexBigInteger gas,
                                                  object[] values)
        {
            var encodedData = BuildEncodedData(abi, contractByteCode, values);
            var transaction = new TransactionInput(encodedData, gas, from);

            return(transaction);
        }
コード例 #12
0
 public Task <string> SendRequestAsync(TransactionInput input, object id = null)
 {
     if (input == null)
     {
         throw new ArgumentNullException(nameof(input));
     }
     return(base.SendRequestAsync(id, input));
 }
コード例 #13
0
        private Transaction MakeTransaction(Dictionary <string, List <UTXO> > dic_UTXO, string fromAddress, string targetAddress, Hash256 asset, decimal sendCount)
        {
            //从字典取出utxo列表
            List <UTXO> uTXOs = dic_UTXO[asset.ToString()];

            Transaction transaction = new Transaction();

            decimal count = decimal.Zero;
            List <TransactionInput> transactionInputs = new List <TransactionInput>();

            for (int i = 0; i < uTXOs.Count; i++)
            {
                TransactionInput transactionInput = new TransactionInput();
                transactionInput.hash  = uTXOs[i].txid;
                transactionInput.index = (ushort)uTXOs[i].n;

                transactionInputs.Add(transactionInput);
                count += uTXOs[i].value;
                if (count >= sendCount)
                {
                    break;
                }
            }

            transaction.inputs = transactionInputs.ToArray();

            //输入大于等于输出
            if (count >= sendCount)
            {
                List <TransactionOutput> transactionOutputs = new List <TransactionOutput>();
                //输出
                if (sendCount > decimal.Zero)
                {
                    TransactionOutput transactionOutput = new TransactionOutput();
                    transactionOutput.assetId   = asset;
                    transactionOutput.value     = sendCount;
                    transactionOutput.toAddress = Helper.GetPublicKeyHashFromAddress(targetAddress);
                    transactionOutputs.Add(transactionOutput);
                }

                //找零
                decimal change = count - sendCount;
                if (change > decimal.Zero)
                {
                    TransactionOutput transactionOutput = new TransactionOutput();
                    transactionOutput.toAddress = Helper.GetPublicKeyHashFromAddress(fromAddress);
                    transactionOutput.value     = change;
                    transactionOutput.assetId   = asset;
                    transactionOutputs.Add(transactionOutput);
                }
                transaction.outputs = transactionOutputs.ToArray();
            }
            else
            {
                throw new Exception("余额不足!");
            }
            return(transaction);
        }
コード例 #14
0
        public async Task <dynamic> ExecuteTestAsync(RpcClient client)
        {
            //The compiled solidity contract to be deployed
            //contract test { function multiply(uint a) returns(uint d) { return a * 7; } }
            var contractByteCode = "0x606060405260728060106000396000f360606040526000357c010000000000000000000000000000000000000000000000000000000090048063c6888fa1146037576035565b005b604b60048080359060200190919050506061565b6040518082815260200191505060405180910390f35b6000600782029050606d565b91905056";

            //Create a new Eth Send Transanction RPC Handler
            var ethSendTransation = new EthSendTransaction(client);
            //As the input the compiled contract is the Data, together with our address
            var transactionInput = new TransactionInput();

            transactionInput.Data = contractByteCode;
            transactionInput.From = "0x12890d2cce102216644c59dae5baed380d84830c";
            // retrieve the hash
            var transactionHash = await ethSendTransation.SendRequestAsync(transactionInput);

            //the contract should be mining now

            //get contract address
            var ethGetTransactionReceipt = new EthGetTransactionReceipt(client);
            TransactionReceipt receipt   = null;

            //wait for the contract to be mined to the address
            while (receipt == null)
            {
                receipt = await ethGetTransactionReceipt.SendRequestAsync(transactionHash);
            }

            //Encode and build function parameters
            var function = new FunctionCallEncoder();

            //Input the function method Sha3Encoded (4 bytes)
            var sha3Signature = "c6888fa1";
            //Define input parameters
            var inputParameters = new[] { new Parameter("uint", "a") };
            //encode the function call (function + parameter input)

            //using 69 as the input
            var functionCall = function.EncodeRequest(sha3Signature, inputParameters, 69);

            //reuse the transaction input, (just the address)
            //the destination address is the contract address
            transactionInput.To = receipt.ContractAddress;
            //use as data the function call
            transactionInput.Data = functionCall;
            // rpc method to do the call
            var ethCall = new EthCall(client);
            // call and get the result
            var resultFunction = await ethCall.SendRequestAsync(transactionInput);

            // decode the output
            var functionDecoder = new FunctionCallDecoder();

            var output = functionDecoder.DecodeOutput <int>(resultFunction, new Parameter("uint", "d"));

            //visual test
            return("The result of deploying a contract and calling a function to multiply 7 by 69 is: " + output + " and should be 483");
        }
コード例 #15
0
        public Block GenerateBlock(
            ByteArray blockHash,
            ByteArray transactionHash,
            InputInfo[] inputs,
            OutputInfo[] outputs)
        {
            BlockHeader blockHeader = new BlockHeader()
            {
                BlockHash             = blockHash,
                BlockNonce            = 0,
                BlockTargetDifficulty = 0,
                BlockTimestamp        = this.GetCurrentBlockTimeStamp(),
                BlockTimestampUnix    = 0,
                BlockVersion          = 1,
                MerkleRootHash        = ByteArray.Empty,
                PreviousBlockHash     = this.previousBlockHash,
            };

            this.blockTimeStamp = this.blockTimeStamp.AddDays(1);

            string expectedFileName = string.Format(CultureInfo.InvariantCulture, "blk{0:00000}.dat", this.GetCurentBlockchainFileIndex());
            Block  block            = new Block(expectedFileName, blockHeader);

            Transaction transaction = new Transaction()
            {
                TransactionHash     = transactionHash,
                TransactionLockTime = 0,
                TransactionVersion  = 1,
            };

            foreach (InputInfo inputInfo in inputs)
            {
                TransactionInput transactionInput = new TransactionInput()
                {
                    InputScript                  = ByteArray.Empty,
                    SourceTransactionHash        = inputInfo.SourceTransactionHash,
                    SourceTransactionOutputIndex = inputInfo.SourceTransactionOutputIndex,
                };
                transaction.AddInput(transactionInput);
            }

            foreach (OutputInfo outputInfo in outputs)
            {
                TransactionOutput transactionOutput = new TransactionOutput()
                {
                    OutputScript       = ByteArray.Empty,
                    OutputValueSatoshi = (ulong)(outputInfo.OutputValueSatoshi * DatabaseGenerator.BtcToSatoshi),
                };

                transaction.AddOutput(transactionOutput);
            }

            block.AddTransaction(transaction);

            this.previousBlockHash = block.BlockHeader.BlockHash;

            return(block);
        }
コード例 #16
0
        public override void Run(string[] args)
        {
            var cmdArgs = this.ParseArgs(args);

            var rootAccount = new Account(RootPrivateKey);
            var rootWeb3    = new Web3(rootAccount, Rpcclient);

            var contract = rootWeb3.Eth.GetContract(Abi, _contractAddress);
            var function = contract.GetFunction("Batch");

            var count = 0;

            using (var fr = new StreamReader(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "acc.txt"))) {
                List <string> adds = new List <string>();
                while (true)
                {
                    var line = fr.ReadLine();
                    if (string.IsNullOrEmpty(line))
                    {
                        break;
                    }


                    var addr = line.Split(",")[0];


                    adds.Add(addr);
                    var accountNum = 200;
                    if (adds.Count == accountNum)
                    {
                        try {
                            var gas = function.EstimateGasAsync(RootPubAddress,
                                                                new HexBigInteger(100000000),
                                                                new HexBigInteger(Web3.Convert.ToWei(10000, UnitConversion.EthUnit.Ether)),
                                                                new object[] { adds.ToArray() }).Result;

                            var ti = new TransactionInput()
                            {
                                From     = RootPubAddress,
                                Gas      = new HexBigInteger(gas.Value),
                                Value    = new HexBigInteger(Web3.Convert.ToWei(10000, UnitConversion.EthUnit.Ether)),
                                GasPrice = new HexBigInteger(Web3.Convert.ToWei(2, UnitConversion.EthUnit.Gwei)),
                                To       = _contractAddress
                            };

                            var ret = function.SendTransactionAndWaitForReceiptAsync(ti, null, new object[] { adds.ToArray() }).Result;

                            count += accountNum;
                            Console.WriteLine($"process count {count}  cur status {ret.Status.Value}");
                        } catch (Exception ex) {
                            Console.WriteLine(ex.Message);
                        }

                        adds.Clear();
                    }
                }
            }
        }
コード例 #17
0
 public override Task <string> SendTransactionAsync(TransactionInput transactionInput,
                                                    CancellationToken cancellationToken = default(CancellationToken))
 {
     if (transactionInput == null)
     {
         throw new ArgumentNullException(nameof(transactionInput));
     }
     return(SignAndSendTransactionAsync(transactionInput, cancellationToken));
 }
コード例 #18
0
        private TransactionInput BuildTransaction(string abi, string contractByteCode, string from, object[] values)
        {
            var contract    = abiDeserialiser.DeserialiseContract(abi);
            var encodedData = constructorCallEncoder.EncodeRequest(contractByteCode,
                                                                   contract.Constructor.InputParameters, values);
            var transaction = new TransactionInput(encodedData, null, from);

            return(transaction);
        }
 public string SignTransaction(TransactionInput transaction)
 {
     if (transaction == null)
     {
         throw new ArgumentNullException(nameof(transaction));
     }
     SetDefaultGasPriceAndCostIfNotSet(transaction);
     return(_transactionSigner.SignTransaction((Account)Account, transaction, ChainId, FeeCurrency, GatewayFeeRecipient, GatewayFee));
 }
コード例 #20
0
ファイル: Client.cs プロジェクト: ajlopez/SimpleNethereum
        public async Task <string> Transfer(string fromAccount, string toAccount, HexBigInteger value, HexBigInteger gas, HexBigInteger gasPrice)
        {
            TransactionInput ti = new TransactionInput(null,
                                                       toAccount,
                                                       fromAccount,
                                                       gas, gasPrice, value);

            return(await web3.Eth.Transactions.SendTransaction.SendRequestAsync(ti));
        }
コード例 #21
0
    /// Sets the DNA based on the input fields
    /// 1. Estimate Gas parameter
    /// 2. Send transaction
    /// 3. Wait for receipt
    private IEnumerator SetDNA()
    {
        string wallet     = inputWallet.text;
        string privateKey = inputPrivateKey.text;

        var contract = new Contract(null, itemManagerABI, itemManagerContractAddress);
        var function = contract.GetFunction("setDNA");

        EthEstimateGasUnityRequest estimateRequest = new EthEstimateGasUnityRequest(url);

        // convert string to hex to work the same way as Javascript Example
        string id        = int.Parse(inputSetDNAItemID.text).ToString("x");
        string hexString = System.Numerics.BigInteger.Parse(inputSetDNADNA.text).ToString("x");

        TransactionInput estimateInput = function.CreateTransactionInput(wallet, id, hexString);

        yield return(estimateRequest.SendRequest(estimateInput));

        if (estimateRequest.Exception != null)
        {
            Debug.Log(estimateRequest.Exception);
            yield break;
        }

        Debug.Log("Gas: " + estimateRequest.Result.Value);

        var req = new TransactionSignedUnityRequest(url, privateKey, wallet);

        var callInput = function.CreateTransactionInput(
            wallet,
            estimateRequest.Result,
            new HexBigInteger("0x0"),
            id,
            hexString);

        yield return(req.SignAndSendTransaction(callInput));

        textSetDNAStatus.text = "waiting";

        var receiptRequest = new EthGetTransactionReceiptUnityRequest(url);

        bool done = false;

        while (!done)
        {
            yield return(receiptRequest.SendRequest(req.Result));

            if (receiptRequest.Result != null)
            {
                done = true;
            }

            yield return(new WaitForSeconds(1.0f));
        }

        textSetDNAStatus.text = "done";
    }
コード例 #22
0
        protected TransactionInput CreateTransactionInput(string encodedFunctionCall, string from)
        {
            var tx = new TransactionInput(encodedFunctionCall, ContractAddress)
            {
                From = @from
            };

            return(tx);
        }
コード例 #23
0
        public TransactionInput BuildTransaction(HexBigInteger type, string abi, string contractByteCode, string from, HexBigInteger gas, HexBigInteger maxFeePerGas, HexBigInteger maxPriorityFeePerGas,
                                                 HexBigInteger value, HexBigInteger nonce, object[] values)
        {
            var encodedData = BuildEncodedData(abi, contractByteCode, values);
            var transaction = new TransactionInput(type, encodedData, null, from, gas, value, maxFeePerGas, maxPriorityFeePerGas);

            transaction.Nonce = nonce;
            return(transaction);
        }
コード例 #24
0
        public TransactionInput BuildTransaction <TConstructorParams>(HexBigInteger type, string contractByteCode, string from, HexBigInteger gas, HexBigInteger maxFeePerGas, HexBigInteger maxPriorityFeePerGas,
                                                                      HexBigInteger value, HexBigInteger nonce, TConstructorParams inputParams)
        {
            var encodedData = _constructorCallEncoder.EncodeRequest(inputParams, contractByteCode);
            var transaction = new TransactionInput(type, encodedData, null, from, gas, value, maxFeePerGas, maxPriorityFeePerGas);

            transaction.Nonce = nonce;
            return(transaction);
        }
コード例 #25
0
        private async Task <string> RelayTransaction(
            Relay relay,
            TransactionInput transaction,
            string hubAddress)
        {
            var nonce = await _relayHubManager
                        .GetNonceAsync(hubAddress, transaction.From)
                        .ConfigureAwait(false);

            var hash = GetTransactionHash(
                transaction.From,
                transaction.To,
                transaction.Data,
                relay.Fee,
                transaction.GasPrice.Value,
                transaction.Gas.Value,
                nonce,
                hubAddress,
                relay.Address);

            var signer    = new EthereumMessageSigner();
            var signature = signer.Sign(hash.HexToByteArray(), _privateKey);

            var approvalDataSig = signer.Sign(
                GetApprovalData(
                    transaction,
                    relay.Fee,
                    transaction.GasPrice.Value,
                    transaction.Gas.Value,
                    nonce,
                    hubAddress,
                    relay.Address),
                _privateKey);

            var transactionCount = await _ethApiContractService.Transactions.GetTransactionCount
                                   .SendRequestAsync(relay.Address)
                                   .ConfigureAwait(false);

            var relayMaxNonce = transactionCount.Value + new BigInteger(_options.AllowedRelayNonceGap);

            var txHash = await SendViaRelay(
                relay.Url,
                transaction,
                relay.Fee,
                transaction.GasPrice.Value,
                transaction.Gas.Value,
                nonce,
                hubAddress,
                relay.Address,
                signature,
                approvalDataSig,
                relayMaxNonce)
                         .ConfigureAwait(false);

            return(txHash);
        }
コード例 #26
0
    public TransactionInput GetTransferEtherInput(string data, string toAddress, HexBigInteger gas, HexBigInteger gasPrice, HexBigInteger value)
    {
        TransactionInput input = new TransactionInput(
            data,
            toAddress,
            publicAddress,
            gas, gasPrice, value);

        return(input);
    }
コード例 #27
0
 public override Task <string> SendTransactionAsync(TransactionInput transactionInput)
 {
     transactionInput.From = Account.Address;
     if (transactionInput.Gas == null)
     {
         transactionInput.Gas = new HexBigInteger(0);
     }
     transactionInput.Gas = new HexBigInteger(transactionInput.Gas.Value + DefaultGasIncrement);
     return(base.SendTransactionAsync(transactionInput));
 }
コード例 #28
0
        public override Task <string> SendTransactionAsync(string from, string to, HexBigInteger amount)
        {
            if (!from.IsTheSameAddress(Account.Address))
            {
                throw new Exception("Invalid account used");
            }
            var transactionInput = new TransactionInput(null, to, from, null, null, amount);

            return(SendTransactionAsync(transactionInput));
        }
コード例 #29
0
        public string SignTransaction(TransactionInput transaction)
        {
            if (transaction == null)
            {
                throw new ArgumentNullException(nameof(transaction));
            }
            SetDefaultGasIfNotSet(transaction);

            return(_transactionSigner.SignTransaction((Account)Account, transaction, ChainId));
        }
コード例 #30
0
        public override async Task <string> SendTransactionAsync(string from, string to, HexBigInteger amount)
        {
            if (from != Account.Address)
            {
                throw new Exception("Invalid account used");
            }
            var transactionInput = new TransactionInput(from, to, amount);

            return(await SendTransactionAsync(transactionInput));
        }
コード例 #31
0
        public ActionResult Save(TransactionInput input)
        {
            // Save the transaction
            Transaction transaction = new Transaction()
            {
                AccountId = Guid.Empty,
                Description = input.Description,
                Date = input.Date,
                Amount = input.Amount,
                DateEntered = DateTime.Now
            };

            bool result = Repository.SetTransaction(transaction);

            if (Request.IsAjaxRequest())
            {
                return Index("");
            }

            return RedirectToAction("Index");
        }
コード例 #32
0
ファイル: Core.cs プロジェクト: pizyumi/CREA
            public TestWindow(Program.Logger _logger)
            {
                StackPanel sp1 = null;
                StackPanel sp2 = null;

                EventHandler<Program.LogData> _LoggerLogAdded = (sender, e) => ((Action)(() =>
                {
                    TextBlock tb = new TextBlock();
                    tb.Text = e.Text;
                    tb.Foreground = e.Kind == Program.LogData.LogKind.error ? Brushes.Red : Brushes.White;
                    tb.Margin = new Thickness(0.0, 10.0, 0.0, 10.0);

                    sp2.Children.Add(tb);
                })).BeginExecuteInUIThread();

                Loaded += (sender, e) =>
                {
                    Grid grid = new Grid();
                    grid.RowDefinitions.Add(new RowDefinition());
                    grid.RowDefinitions.Add(new RowDefinition());
                    grid.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto });
                    grid.ColumnDefinitions.Add(new ColumnDefinition());

                    ScrollViewer sv1 = new ScrollViewer();
                    sv1.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
                    sv1.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;
                    sv1.SetValue(Grid.RowProperty, 0);
                    sv1.SetValue(Grid.ColumnProperty, 0);

                    sp1 = new StackPanel();
                    sp1.Background = Brushes.Black;

                    ScrollViewer sv2 = new ScrollViewer();
                    sv2.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
                    sv2.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;
                    sv2.SetValue(Grid.RowProperty, 1);
                    sv2.SetValue(Grid.ColumnProperty, 0);

                    sp2 = new StackPanel();
                    sp2.Background = Brushes.Black;

                    sv1.Content = sp1;
                    sv2.Content = sp2;

                    TextBox tb = new TextBox();
                    tb.SetValue(Grid.RowProperty, 2);
                    tb.SetValue(Grid.ColumnProperty, 0);

                    grid.Children.Add(sv1);
                    grid.Children.Add(sv2);
                    grid.Children.Add(tb);

                    Content = grid;

                    Console.SetOut(new TextBlockStreamWriter(sp1));

                    _logger.LogAdded += _LoggerLogAdded;

                    //SimulationWindow sw = new SimulationWindow();
                    //sw.ShowDialog();

                    this.StartTask(string.Empty, string.Empty, () =>
                    {


                        //string testPrivateRsaParameters;
                        //using (RSACryptoServiceProvider rsacsp = new RSACryptoServiceProvider(2048))
                        //    testPrivateRsaParameters = rsacsp.ToXmlString(true);


                        //RealInboundChennel ric = new RealInboundChennel(7777, RsaKeySize.rsa2048, 100);
                        //ric.Accepted += (sender2, e2) =>
                        //{
                        //    this.StartTask("", "", () =>
                        //    {
                        //        e2.WriteBytes(BitConverter.GetBytes(true));

                        //        bool b = BitConverter.ToBoolean(e2.ReadBytes(), 0);

                        //        SessionChannel sc = e2.NewSession();
                        //        sc.WriteBytes(BitConverter.GetBytes(true));
                        //        sc.Close();

                        //        //e2.Close();
                        //    });


                        //    //e2.Close();

                        //    //Console.WriteLine("");
                        //};
                        //ric.RequestAcceptanceStart();


                        //AutoResetEvent are = new AutoResetEvent(false);
                        //SocketChannel socketc = null;

                        //RealOutboundChannel roc = new RealOutboundChannel(IPAddress.Loopback, 7777, RsaKeySize.rsa2048, testPrivateRsaParameters);
                        //roc.Connected += (sender2, e2) =>
                        //{
                        //    socketc = e2;
                        //    socketc.Sessioned += (sender3, e3) =>
                        //    {
                        //        bool b3 = BitConverter.ToBoolean(e3.ReadBytes(), 0);

                        //        Console.WriteLine("");
                        //    };

                        //    are.Set();

                        //    //e2.Close();

                        //    //Console.WriteLine("connected");
                        //};
                        //roc.RequestConnection();

                        //are.WaitOne();

                        //bool b2 = BitConverter.ToBoolean(socketc.ReadBytes(), 0);

                        //socketc.WriteBytes(BitConverter.GetBytes(true));

                        //socketc.Close();


                        //CirculatedInteger ci = new CirculatedInteger(5);

                        //Console.WriteLine(ci.GetForward(0));
                        //Console.WriteLine(ci.GetForward(1));
                        //Console.WriteLine(ci.GetForward(2));
                        //Console.WriteLine(ci.GetForward(3));
                        //Console.WriteLine(ci.GetForward(4));
                        //Console.WriteLine(ci.GetForward(5));
                        //Console.WriteLine(ci.GetForward(6));

                        //Console.WriteLine(ci.GetBackward(0));
                        //Console.WriteLine(ci.GetBackward(1));
                        //Console.WriteLine(ci.GetBackward(2));
                        //Console.WriteLine(ci.GetBackward(3));
                        //Console.WriteLine(ci.GetBackward(4));
                        //Console.WriteLine(ci.GetBackward(5));
                        //Console.WriteLine(ci.GetBackward(6));

                        Secp256k1KeyPair<Sha256Hash> secp256k1KeyPair = new Secp256k1KeyPair<Sha256Hash>(true);

                        Sha256Ripemd160Hash address = new Sha256Ripemd160Hash(secp256k1KeyPair.pubKey.pubKey);

                        TransactionInput ti1 = new TransactionInput();
                        ti1.LoadVersion1(0, 0, 0);

                        TransactionOutput to1 = new TransactionOutput();
                        to1.LoadVersion0(address, new Creacoin(50m));

                        CoinbaseTransaction ct1 = new CoinbaseTransaction();
                        ct1.LoadVersion0(new TransactionOutput[] { to1 });

                        byte[] ctBytes1 = ct1.ToBinary();

                        CoinbaseTransaction ct2 = SHAREDDATA.FromBinary<CoinbaseTransaction>(ctBytes1);

                        TransferTransaction tt1 = new TransferTransaction();
                        tt1.LoadVersion1(new TransactionInput[] { ti1 }, new TransactionOutput[] { to1 });
                        tt1.Sign(new TransactionOutput[] { to1 }, new DSAPRIVKEYBASE[] { secp256k1KeyPair.privKey });

                        byte[] ttBytes1 = tt1.ToBinary();

                        TransferTransaction tt2 = SHAREDDATA.FromBinary<TransferTransaction>(ttBytes1);

                        ResTransactions rt1 = new ResTransactions(new Transaction[] { ct1, tt1 });

                        byte[] rtBytes1 = rt1.ToBinary();

                        ResTransactions rt2 = SHAREDDATA.FromBinary<ResTransactions>(rtBytes1);


                        byte[] test1 = SHAREDDATA.ToBinary<Transaction>(ct2);

                        CoinbaseTransaction ct3 = SHAREDDATA.FromBinary<Transaction>(test1) as CoinbaseTransaction;

                        byte[] test2 = SHAREDDATA.ToBinary<Transaction>(tt2);

                        TransferTransaction tt3 = SHAREDDATA.FromBinary<Transaction>(test2) as TransferTransaction;

                        //string pathBase = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

                        //New.BlockManagerDB bmdb = new New.BlockManagerDB(pathBase);
                        //New.BlockDB blkdb = new New.BlockDB(pathBase);
                        //New.BlockFilePointersDB bfpdb = new New.BlockFilePointersDB(pathBase);

                        //New.BlockManager bm = new New.BlockManager(bmdb, blkdb, bfpdb);

                        //New.TestBlock block1 = new New.TestBlock(1);

                        //bm.AddMainBlock(block1);
                        //bm.AddMainBlock(block1);


                        //Test10NodesInv();

                        //TestDHT();

                        //bool isFirst = true;
                        //int portNumber = 0;
                        //CreaNode cnlt = null;
                        //tb.KeyDown += (sender2, e2) =>
                        //{
                        //    if (e2.Key != Key.Enter)
                        //        return;

                        //    if (isFirst)
                        //    {
                        //        portNumber = int.Parse(tb.Text);

                        //        FirstNodeInfosDatabase fnidb = new FirstNodeInfosDatabase(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));

                        //        cnlt = new CreaNode((ushort)portNumber, 0, "test", fnidb);
                        //        cnlt.Start();

                        //        cnlt.ReceivedNewChat += (sender3, e3) =>
                        //        {
                        //            this.ConsoleWriteLine(e3.Message);
                        //        };

                        //        isFirst = false;

                        //        return;
                        //    }

                        //    Chat chat = new Chat();
                        //    chat.LoadVersion0(portNumber.ToString(), tb.Text);
                        //    chat.Sign(secp256k1KeyPair.privKey);

                        //    cnlt.DiffuseNewChat(chat);
                        //};
                    });
                };

                Closed += (sender, e) =>
                {
                    _logger.LogAdded -= _LoggerLogAdded;

                    string fileText = string.Empty;
                    foreach (var child in sp1.Children)
                        fileText += (child as TextBlock).Text + Environment.NewLine;

                    File.AppendAllText(Path.Combine(new FileInfo(Assembly.GetEntryAssembly().Location).DirectoryName, "LogTest.txt"), fileText);
                };
            }
コード例 #33
0
ファイル: Core.cs プロジェクト: pizyumi/CREA
        public void NewTransaction(IAccount iAccount, Sha256Ripemd160Hash address, CurrencyUnit amount, CurrencyUnit fee)
        {
            if (!isSystemStarted)
                throw new InvalidOperationException("core_not_started");

            Account account = iAccount as Account;
            if (account == null)
                throw new ArgumentException("iaccount_type");

            utxodb.Open();

            List<Utxo> utxosList = blockChain.GetAllUtxos(account.Address.Hash);
            utxosList.Sort((a, b) =>
            {
                if (a.blockIndex < b.blockIndex)
                    return -1;
                else if (a.blockIndex > b.blockIndex)
                    return 1;

                if (a.txIndex < b.txIndex)
                    return -1;
                else if (a.txIndex > b.txIndex)
                    return 1;

                if (a.txOutIndex < b.txOutIndex)
                    return -1;
                else if (a.txOutIndex > b.txOutIndex)
                    return 1;

                return 0;
            });
            Utxo[] utxos = utxosList.ToArray();

            utxodb.Close();

            List<TransactionInput> usedTxInList = new List<TransactionInput>();
            foreach (var unconfirmedTh in transactionHistories.unconfirmedTransactionHistories.ToArray())
                for (int i = 0; i < unconfirmedTh.prevTxOuts.Length; i++)
                    if (unconfirmedTh.prevTxOuts[i].Address.Equals(account.Address.Hash))
                        usedTxInList.Add(unconfirmedTh.transaction.TxInputs[i]);
            usedTxInList.Sort((a, b) =>
            {
                if (a.PrevTxBlockIndex < b.PrevTxBlockIndex)
                    return -1;
                else if (a.PrevTxBlockIndex > b.PrevTxBlockIndex)
                    return 1;

                if (a.PrevTxIndex < b.PrevTxIndex)
                    return -1;
                else if (a.PrevTxIndex > b.PrevTxIndex)
                    return 1;

                if (a.PrevTxOutputIndex < b.PrevTxOutputIndex)
                    return -1;
                else if (a.PrevTxOutputIndex > b.PrevTxOutputIndex)
                    return 1;

                return 0;
            });
            TransactionInput[] usedTxIns = usedTxInList.ToArray();

            List<Utxo> unusedUtxosList = new List<Utxo>();

            int position = -1;
            for (int i = 0; i < usedTxIns.Length; i++)
            {
                bool flag = false;
                while (position < utxos.Length)
                {
                    position++;

                    if (usedTxIns[i].PrevTxBlockIndex == utxos[position].blockIndex && usedTxIns[i].PrevTxIndex == utxos[position].txIndex && usedTxIns[i].PrevTxOutputIndex == utxos[position].txOutIndex)
                    {
                        flag = true;

                        break;
                    }
                    else
                        unusedUtxosList.Add(utxos[position]);
                }

                if (!flag)
                    throw new InvalidOperationException();
            }

            long rawFeeAndAmount = amount.rawAmount + fee.rawAmount;

            List<Utxo> useUtxosList = new List<Utxo>();
            long rawFeeAndAmountAndChange = 0;

            bool flag2 = false;
            foreach (var utxo in unusedUtxosList)
            {
                useUtxosList.Add(utxo);

                if ((rawFeeAndAmountAndChange += utxo.amount.rawAmount) > rawFeeAndAmount)
                {
                    flag2 = true;

                    break;
                }
            }

            if (!flag2)
                for (int i = position + 1; i < utxos.Length; i++)
                {
                    useUtxosList.Add(utxos[i]);

                    if ((rawFeeAndAmountAndChange += utxos[i].amount.rawAmount) > rawFeeAndAmount)
                    {
                        flag2 = true;

                        break;
                    }
                }

            if (!flag2)
                throw new InvalidOperationException();

            Utxo[] useUtxos = useUtxosList.ToArray();

            TransactionInput[] txIns = new TransactionInput[useUtxos.Length];
            for (int i = 0; i < txIns.Length; i++)
            {
                txIns[i] = new TransactionInput();
                txIns[i].LoadVersion0(useUtxos[i].blockIndex, useUtxos[i].txIndex, useUtxos[i].txOutIndex, account.Ecdsa256KeyPair.pubKey);
            }

            long rawChange = rawFeeAndAmountAndChange - rawFeeAndAmount;

            TransactionOutput[] txOuts = new TransactionOutput[rawChange == 0 ? 1 : 2];
            txOuts[0] = new TransactionOutput();
            txOuts[0].LoadVersion0(address, amount);
            if (rawChange != 0)
            {
                txOuts[1] = new TransactionOutput();
                txOuts[1].LoadVersion0(account.Address.Hash, new CurrencyUnit(rawChange));
            }

            TransactionOutput[] prevTxOuts = new TransactionOutput[useUtxos.Length];
            for (int i = 0; i < prevTxOuts.Length; i++)
                prevTxOuts[i] = blockChain.GetMainBlock(txIns[i].PrevTxBlockIndex).Transactions[txIns[i].PrevTxIndex].TxOutputs[txIns[i].PrevTxOutputIndex];

            Ecdsa256PrivKey[] privKeys = new Ecdsa256PrivKey[useUtxos.Length];
            for (int i = 0; i < privKeys.Length; i++)
                privKeys[i] = account.Ecdsa256KeyPair.privKey;

            TransferTransaction ttx = new TransferTransaction();
            ttx.LoadVersion0(txIns, txOuts);
            ttx.Sign(prevTxOuts, privKeys);

            creaNodeTest.DiffuseNewTransaction(ttx);
        }
コード例 #34
0
ファイル: CoreTest.cs プロジェクト: pizyumi/CREA
        //TransactionOutput、TransactionInput、CoinbaseTransaction、TransferTransactionのテスト
        public static void Test10()
        {
            Ecdsa256KeyPair keypair1 = new Ecdsa256KeyPair(true);
            Ecdsa256KeyPair keypair2 = new Ecdsa256KeyPair(true);
            Ecdsa256KeyPair keypair3 = new Ecdsa256KeyPair(true);

            Sha256Ripemd160Hash address1 = new Sha256Ripemd160Hash(keypair1.pubKey.pubKey);
            CurrencyUnit amount1 = new Creacoin(50.0m);
            Sha256Ripemd160Hash address2 = new Sha256Ripemd160Hash(keypair2.pubKey.pubKey);
            CurrencyUnit amount2 = new Creacoin(25.0m);
            Sha256Ripemd160Hash address3 = new Sha256Ripemd160Hash(keypair3.pubKey.pubKey);
            CurrencyUnit amount3 = new Yumina(0.01m);

            TransactionOutput txOut1 = new TransactionOutput();
            txOut1.LoadVersion0(address1, amount1);
            TransactionOutput txOut2 = new TransactionOutput();
            txOut2.LoadVersion0(address2, amount2);
            TransactionOutput txOut3 = new TransactionOutput();
            txOut3.LoadVersion0(address3, amount3);

            if (txOut1.Address != address1)
                throw new Exception("test10_1");
            if (txOut1.Amount != amount1)
                throw new Exception("test10_2");

            byte[] txOutBytes = txOut1.ToBinary();

            if (txOutBytes.Length != 29)
                throw new Exception("test10_3");

            TransactionOutput txOutRestore = SHAREDDATA.FromBinary<TransactionOutput>(txOutBytes, 0);

            if (!txOut1.Address.Equals(txOutRestore.Address))
                throw new Exception("test10_4");
            if (txOut1.Amount.rawAmount != txOutRestore.Amount.rawAmount)
                throw new Exception("test10_5");

            TransactionInput txIn1 = new TransactionInput();
            txIn1.LoadVersion0(0, 0, 0, keypair1.pubKey);
            TransactionInput txIn2 = new TransactionInput();
            txIn2.LoadVersion0(1, 0, 0, keypair2.pubKey);
            TransactionInput txIn3 = new TransactionInput();
            txIn3.LoadVersion0(2, 0, 0, keypair3.pubKey);

            if (txIn1.PrevTxBlockIndex != 0)
                throw new Exception("test10_6");
            if (txIn1.PrevTxIndex != 0)
                throw new Exception("test10_7");
            if (txIn1.PrevTxOutputIndex != 0)
                throw new Exception("test10_8");
            if (txIn1.SenderPubKey != keypair1.pubKey)
                throw new Exception("test10_9");

            TransactionOutput[] txOuts = new TransactionOutput[] { txOut1, txOut2, txOut3 };

            CoinbaseTransaction cTx = new CoinbaseTransaction();
            cTx.LoadVersion0(txOuts);

            if (cTx.TxOutputs != txOuts)
                throw new Exception("test10_10");
            if (cTx.TxInputs.Length != 0)
                throw new Exception("test10_11");

            byte[] cTxBytes = cTx.ToBinary();

            if (cTxBytes.Length != 97)
                throw new Exception("test10_12");

            CoinbaseTransaction cTxRestore = SHAREDDATA.FromBinary<CoinbaseTransaction>(cTxBytes);

            if (!cTx.Id.Equals(cTxRestore.Id))
                throw new Exception("test10_13");

            if (cTx.Verify())
                throw new Exception("test10_14");
            if (cTx.VerifyNotExistDustTxOutput())
                throw new Exception("test10_15");
            if (!cTx.VerifyNumberOfTxInputs())
                throw new Exception("test10_16");
            if (!cTx.VerifyNumberOfTxOutputs())
                throw new Exception("test10_17");

            TransactionOutput[] txOuts2 = new TransactionOutput[11];
            for (int i = 0; i < txOuts2.Length; i++)
                txOuts2[i] = txOut1;

            CoinbaseTransaction cTx2 = new CoinbaseTransaction();
            cTx2.LoadVersion0(txOuts2);

            if (cTx2.Verify())
                throw new Exception("test10_18");
            if (!cTx2.VerifyNotExistDustTxOutput())
                throw new Exception("test10_19");
            if (!cTx2.VerifyNumberOfTxInputs())
                throw new Exception("test10_20");
            if (cTx2.VerifyNumberOfTxOutputs())
                throw new Exception("test10_21");

            TransactionOutput[] txOuts3 = new TransactionOutput[] { txOut1, txOut2 };

            CoinbaseTransaction cTx3 = new CoinbaseTransaction();
            cTx3.LoadVersion0(txOuts3);

            if (!cTx3.Verify())
                throw new Exception("test10_22");
            if (!cTx3.VerifyNotExistDustTxOutput())
                throw new Exception("test10_23");
            if (!cTx3.VerifyNumberOfTxInputs())
                throw new Exception("test10_24");
            if (!cTx3.VerifyNumberOfTxOutputs())
                throw new Exception("test10_25");

            TransactionInput[] txIns = new TransactionInput[] { txIn1, txIn2, txIn3 };

            TransferTransaction tTx1 = new TransferTransaction();
            tTx1.LoadVersion0(txIns, txOuts);
            tTx1.Sign(txOuts, new DSAPRIVKEYBASE[] { keypair1.privKey, keypair2.privKey, keypair3.privKey });

            if (tTx1.TxInputs != txIns)
                throw new Exception("test10_26");
            if (tTx1.TxOutputs != txOuts)
                throw new Exception("test10_27");

            byte[] txInBytes = txIn1.ToBinary();

            if (txInBytes.Length != 153)
                throw new Exception("test10_28");

            TransactionInput txInRestore = SHAREDDATA.FromBinary<TransactionInput>(txInBytes, 0);

            if (txIn1.PrevTxBlockIndex != txInRestore.PrevTxBlockIndex)
                throw new Exception("test10_29");
            if (txIn1.PrevTxIndex != txInRestore.PrevTxIndex)
                throw new Exception("test10_30");
            if (txIn1.PrevTxOutputIndex != txInRestore.PrevTxOutputIndex)
                throw new Exception("test10_31");
            if (!txIn1.SenderPubKey.pubKey.BytesEquals(txInRestore.SenderPubKey.pubKey))
                throw new Exception("test10_32");
            if (!txIn1.SenderSignature.signature.BytesEquals(txInRestore.SenderSignature.signature))
                throw new Exception("test10_33");

            byte[] tTxBytes = tTx1.ToBinary();

            if (tTxBytes.Length != 557)
                throw new Exception("test10_34");

            TransferTransaction tTxRestore = SHAREDDATA.FromBinary<TransferTransaction>(tTxBytes);

            if (!tTx1.Id.Equals(tTxRestore.Id))
                throw new Exception("test10_35");

            if (tTx1.Verify(txOuts))
                throw new Exception("test10_36");
            if (tTx1.VerifyNotExistDustTxOutput())
                throw new Exception("test10_37");
            if (!tTx1.VerifyNumberOfTxInputs())
                throw new Exception("test10_38");
            if (!tTx1.VerifyNumberOfTxOutputs())
                throw new Exception("test10_39");
            if (!tTx1.VerifySignature(txOuts))
                throw new Exception("test10_40");
            if (!tTx1.VerifyPubKey(txOuts))
                throw new Exception("test10_41");
            if (!tTx1.VerifyAmount(txOuts))
                throw new Exception("test10_42");
            if (tTx1.GetFee(txOuts).rawAmount != 0)
                throw new Exception("test10_43");

            TransactionOutput[] txOuts4 = new TransactionOutput[] { txOut2, txOut1, txOut3 };

            if (tTx1.Verify(txOuts4))
                throw new Exception("test10_44");
            if (tTx1.VerifySignature(txOuts4))
                throw new Exception("test10_45");
            if (tTx1.VerifyPubKey(txOuts4))
                throw new Exception("test10_46");

            byte temp2 = tTx1.TxInputs[0].SenderSignature.signature[0];

            tTx1.TxInputs[0].SenderSignature.signature[0] = 0;

            if (tTx1.Verify(txOuts))
                throw new Exception("test10_47");
            if (tTx1.VerifySignature(txOuts))
                throw new Exception("test10_48");
            if (!tTx1.VerifyPubKey(txOuts))
                throw new Exception("test10_49");

            tTx1.TxInputs[0].SenderSignature.signature[0] = temp2;

            TransferTransaction tTx2 = new TransferTransaction();
            tTx2.LoadVersion0(txIns, txOuts);
            tTx2.Sign(txOuts, new DSAPRIVKEYBASE[] { keypair2.privKey, keypair1.privKey, keypair3.privKey });

            if (tTx2.Verify(txOuts))
                throw new Exception("test10_50");
            if (tTx2.VerifySignature(txOuts))
                throw new Exception("test10_51");
            if (!tTx2.VerifyPubKey(txOuts))
                throw new Exception("test10_52");

            TransferTransaction tTx3 = new TransferTransaction();
            tTx3.LoadVersion0(txIns, txOuts);
            tTx3.Sign(txOuts, new DSAPRIVKEYBASE[] { keypair1.privKey, keypair2.privKey, keypair3.privKey });

            byte temp = tTx3.TxInputs[0].SenderPubKey.pubKey[0];

            tTx3.TxInputs[0].SenderPubKey.pubKey[0] = 0;

            if (tTx3.Verify(txOuts))
                throw new Exception("test10_50");
            if (tTx3.VerifySignature(txOuts))
                throw new Exception("test10_51");
            if (tTx3.VerifyPubKey(txOuts))
                throw new Exception("test10_52");

            tTx3.TxInputs[0].SenderPubKey.pubKey[0] = temp;

            TransferTransaction tTx4 = new TransferTransaction();
            tTx4.LoadVersion0(txIns, txOuts2);
            tTx4.Sign(txOuts, new DSAPRIVKEYBASE[] { keypair1.privKey, keypair2.privKey, keypair3.privKey });

            if (tTx4.Verify(txOuts))
                throw new Exception("test10_53");
            if (!tTx4.VerifyNotExistDustTxOutput())
                throw new Exception("test10_54");
            if (!tTx4.VerifyNumberOfTxInputs())
                throw new Exception("test10_55");
            if (tTx4.VerifyNumberOfTxOutputs())
                throw new Exception("test10_56");
            if (!tTx4.VerifySignature(txOuts))
                throw new Exception("test10_57");
            if (!tTx4.VerifyPubKey(txOuts))
                throw new Exception("test10_58");
            if (tTx4.VerifyAmount(txOuts))
                throw new Exception("test10_59");
            if (tTx4.GetFee(txOuts).rawAmount != -47499990000)
                throw new Exception("test10_60");

            TransferTransaction tTx5 = new TransferTransaction();
            tTx5.LoadVersion0(txIns, txOuts3);
            tTx5.Sign(txOuts, new DSAPRIVKEYBASE[] { keypair1.privKey, keypair2.privKey, keypair3.privKey });

            if (!tTx5.Verify(txOuts))
                throw new Exception("test10_61");
            if (!tTx5.VerifyNotExistDustTxOutput())
                throw new Exception("test10_62");
            if (!tTx5.VerifyNumberOfTxInputs())
                throw new Exception("test10_63");
            if (!tTx5.VerifyNumberOfTxOutputs())
                throw new Exception("test10_64");
            if (!tTx5.VerifySignature(txOuts))
                throw new Exception("test10_65");
            if (!tTx5.VerifyPubKey(txOuts))
                throw new Exception("test10_66");
            if (!tTx5.VerifyAmount(txOuts))
                throw new Exception("test10_67");
            if (tTx5.GetFee(txOuts).rawAmount != 10000)
                throw new Exception("test10_68");

            TransactionInput[] txIns2 = new TransactionInput[101];
            for (int i = 0; i < txIns2.Length; i++)
                txIns2[i] = txIn1;

            TransactionOutput[] txOuts5 = new TransactionOutput[txIns2.Length];
            for (int i = 0; i < txOuts5.Length; i++)
                txOuts5[i] = txOut1;

            Ecdsa256PrivKey[] privKeys = new Ecdsa256PrivKey[txIns2.Length];
            for (int i = 0; i < privKeys.Length; i++)
                privKeys[i] = keypair1.privKey;

            TransferTransaction tTx6 = new TransferTransaction();
            tTx6.LoadVersion0(txIns2, txOuts3);
            tTx6.Sign(txOuts5, privKeys);

            if (tTx6.Verify(txOuts5))
                throw new Exception("test10_61");
            if (!tTx6.VerifyNotExistDustTxOutput())
                throw new Exception("test10_62");
            if (tTx6.VerifyNumberOfTxInputs())
                throw new Exception("test10_63");
            if (!tTx6.VerifyNumberOfTxOutputs())
                throw new Exception("test10_64");
            if (!tTx6.VerifySignature(txOuts5))
                throw new Exception("test10_65");
            if (!tTx6.VerifyPubKey(txOuts5))
                throw new Exception("test10_66");
            if (!tTx6.VerifyAmount(txOuts5))
                throw new Exception("test10_67");
            if (tTx6.GetFee(txOuts5).rawAmount != 497500000000)
                throw new Exception("test10_68");

            byte[] cTxBytes2 = SHAREDDATA.ToBinary<Transaction>(cTx);

            if (cTxBytes2.Length != 117)
                throw new Exception("test10_69");

            CoinbaseTransaction cTxRestore2 = SHAREDDATA.FromBinary<Transaction>(cTxBytes2) as CoinbaseTransaction;

            if (!cTx.Id.Equals(cTxRestore2.Id))
                throw new Exception("test10_70");

            byte[] tTxBytes2 = SHAREDDATA.ToBinary<Transaction>(tTx6);

            if (tTxBytes2.Length != 15445)
                throw new Exception("test10_71");

            TransferTransaction tTxRestore2 = SHAREDDATA.FromBinary<Transaction>(tTxBytes2) as TransferTransaction;

            if (!tTx6.Id.Equals(tTxRestore2.Id))
                throw new Exception("test10_72");

            Sha256Sha256Hash ctxid = new Sha256Sha256Hash(cTxBytes);

            if (!ctxid.Equals(cTx.Id))
                throw new Exception("test10_73");

            Sha256Sha256Hash ttxid = new Sha256Sha256Hash(tTx6.ToBinary());

            if (!ttxid.Equals(tTx6.Id))
                throw new Exception("test10_74");

            Console.WriteLine("test10_succeeded");
        }
コード例 #35
0
ファイル: CoreTest.cs プロジェクト: pizyumi/CREA
 public TransactionInput GenerateTransactionInput()
 {
     TransactionInput txIn = new TransactionInput();
     txIn.LoadVersion0(bIndex, txIndex, txOutIndex, keyPair.pubKey);
     return txIn;
 }
コード例 #36
0
ファイル: Blockchain.cs プロジェクト: zhengger/AntShares
 public bool ContainsUnspent(TransactionInput input)
 {
     return ContainsUnspent(input.PrevHash, input.PrevIndex);
 }