public async Task CreateTransaction() { var chainTag = await _vechainClient.GetChainTag(); var blockref = "0x001a7d4448f0948b"; // await _vechainClient.GetLatestBlockRef(); var trans = RawTransaction.CreateUnsigned(chainTag, blockref, new[] { new RawClause("0xd3ae78222beadb038203be21ed5ce7c9b1bff602", "1", "", false) }, "12345678", 720, 0, 21000, ""); var rlpTransaction = new RlpTransaction(trans).AsRlpValues(); var asHexString = RlpEncoder.Encode(rlpTransaction); var rawTransaction = asHexString.ByteArrayToString(StringType.Hex | StringType.ZeroLowerX); // 0x44C3e1Ce754129Eb74522E3CA5695B7Cfa6d2B19 var privateKey = new BigInteger("0xdce1443bd2ef0c2631adc1c67e5c93f13dc23a41c18b536effbbdcbcdb96fb65".HexStringToByteArray()); var publicKey = ECDSASign.PublicKeyFromPrivate(privateKey); var customKey = new ECKeyPair(privateKey, publicKey); var result = trans.Sign(customKey).CalculateTxId(new Address(customKey.GetHexAddress())).Transfer(_vechainClient); }
public void RLPHexParser() { // based on https://github.com/vechain/thor/blob/d9f618b4974733e04949f7b9424001f5bd572baa/tx/transaction_test.go#L20 string to = "0x7567d83b7b8d80addcb281a71d54fc7b3364ffed"; var realTransaction = new RawTransaction { chainTag = 1, blockRef = "00000000aabbccdd", expiration = 32, clauses = new[] { new RawClause(to, "10000", "0x000000606060", false), new RawClause(to, "20000", "0x000000606060", false) }, gasPriceCoef = 128, gas = 21000, dependsOn = null, nonce = "12345678" }; var rlpTransaction = new RlpTransaction(realTransaction).AsRlpValues(); var vetEncoded = RlpEncoder.Encode(rlpTransaction); var out1 = vetEncoded.ByteArrayToString(StringType.Hex | StringType.ZeroLowerX); Assert.Equal("0xf8550184aabbccdd20f840df947567d83b7b8d80addcb281a71d54fc7b3364ffed82271086000000606060df947567d83b7b8d80addcb281a71d54fc7b3364ffed824e208600000060606081808252088083bc614ec080", out1); var vethash = Hash.HashBlake2B(vetEncoded); // Should be 2a1c25ce0d66f45276a5f308b99bf410e2fc7d5b6ea37a49f2ab9f1da9446478 var vethashReadable = vethash.ByteArrayToString(StringType.Hex | StringType.ZeroLowerX); Assert.Equal("0x2a1c25ce0d66f45276a5f308b99bf410e2fc7d5b6ea37a49f2ab9f1da9446478", vethashReadable); }