public static string CreateAndSignTransaction(string recipientAddress, long value,
                                                      string iso8601datetime)
        {
            //faucet public key: 3cd938497b04562b35c001705ed287405da8aff2c486f70413350ef4f108ef9d8
            //faucet address: 9a959a9a2eb68ab550e0355dfef656a5e6016d71
            string     faucetPrivKey = "2debcee8a64fb677dfd6c43423058b86810e7319c957b16bebb4fbf9883ac6b9";
            BigInteger hexPrivateKey = new BigInteger(faucetPrivKey, 16);

            string publicKey     = GetPublicKeyCompressed(faucetPrivKey);
            string senderAddress = CalculateRipeMD160Digest(publicKey);

            Transaction tran = new Transaction
            {
                FromAddress  = senderAddress,
                ToAddress    = recipientAddress,
                SenderPubKey = publicKey,
                Value        = value,
                Fee          = 20,
                DateCreated  = iso8601datetime,
            };
            string tranJson = JsonConvert.SerializeObject(tran, new JsonSerializerSettings
            {
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            });

            TranHash = CalcSHA256(tranJson);
            string txHash = BytesToHex(TranHash);

            BigInteger[] tranSignature = SignTransaction(hexPrivateKey, TranHash);

            TransactionSign tranSigned = new TransactionSign
            {
                FromAddress     = senderAddress,
                ToAddress       = recipientAddress,
                Value           = value,
                DateCreated     = iso8601datetime,
                Fee             = 20,
                SenderPubKey    = publicKey,
                TransactionHash = txHash,
                SenderSignature = new string[]
                {
                    tranSignature[0].ToString(16),
                    tranSignature[1].ToString(16)
                }
            };

            string signedTransactionJson = JsonConvert.SerializeObject(tranSigned, new JsonSerializerSettings
            {
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            });

            return(signedTransactionJson);
        }
Beispiel #2
0
        public RPC_Result RPC_SendRawTransaction(IList <MessagePackObject> _params)
        {
            var message = _params.First();
            var pubkey  = this.pubkey;
            var sign    = Helper_NEO.Sign(message.AsBinary(), this.prikey);

            var signdata = new TransactionSign();

            signdata.VScript = pubkey;
            signdata.IScript = sign;
            var data = SerializeHelper.SerializeToBinary(signdata);

            this.Tell_SendRaw(this._System.GetPipeline(this, "this/node"), message.AsBinary(), data);
            var result = new MessagePackObject(0);

            return(new RPC_Result(result));
        }