本文整理汇总了C#中Transaction.ReadWrite方法的典型用法代码示例。如果您正苦于以下问题:C# Transaction.ReadWrite方法的具体用法?C# Transaction.ReadWrite怎么用?C# Transaction.ReadWrite使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Transaction
的用法示例。
在下文中一共展示了Transaction.ReadWrite方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Entity
public Entity(DynamicTableEntity entity)
{
var splitted = entity.RowKey.Split(new string[] { "-" }, StringSplitOptions.None);
_PartitionKey = entity.PartitionKey;
Timestamp = entity.Timestamp;
TxId = uint256.Parse(splitted[0]);
Type = GetType(splitted[1]);
if(splitted.Length >= 3 && splitted[2] != string.Empty)
BlockId = uint256.Parse(splitted[2]);
var bytes = Helper.GetEntityProperty(entity, "a");
if(bytes != null && bytes.Length != 0)
{
Transaction = new Transaction();
Transaction.ReadWrite(bytes);
}
bytes = Helper.GetEntityProperty(entity, "b");
if(bytes != null && bytes.Length != 0)
{
ColoredTransaction = new ColoredTransaction();
ColoredTransaction.ReadWrite(bytes);
}
_PreviousTxOuts = Helper.DeserializeList<TxOut>(Helper.GetEntityProperty(entity, "c"));
var timestamp = Helper.GetEntityProperty(entity, "d");
if(timestamp != null && timestamp.Length == 8)
{
Timestamp = new DateTimeOffset((long)ToUInt64(timestamp, 0), TimeSpan.Zero);
}
}
示例2: sighash_from_data
public void sighash_from_data()
{
var tests = TestCase.read_json("Data/sighash.json");
foreach(var test in tests)
{
var strTest = test.ToString();
if(test.Count < 1) // Allow for extra stuff (useful for comments)
{
Assert.True(false, "Bad test: " + strTest);
continue;
}
if(test.Count == 1)
continue; // comment
string raw_tx, raw_script, sigHashHex;
int nIn, nHashType;
Transaction tx = new Transaction();
Script scriptCode = new Script();
// deserialize test data
raw_tx = (string)test[0];
raw_script = (string)test[1];
nIn = (int)(long)test[2];
nHashType = (int)(long)test[3];
sigHashHex = (string)test[4];
tx.ReadWrite(ParseHex(raw_tx));
ValidationState state = Network.Main.CreateValidationState();
Assert.True(state.CheckTransaction(tx), strTest);
Assert.True(state.IsValid);
var raw = ParseHex(raw_script);
scriptCode = new Script(raw);
var sh = Script.SignatureHash(scriptCode, tx, nIn, (SigHash)nHashType);
Assert.True(sh.ToString() == sigHashHex, strTest);
}
}
示例3: bloom_match
public void bloom_match()
{
// Random real transaction (b4749f017444b051c44dfd2720e88f314ff94f3dd6d56d40ef65854fcd7fff6b)
Transaction tx = new Transaction();
tx.ReadWrite(ParseHex("01000000010b26e9b7735eb6aabdf358bab62f9816a21ba9ebdb719d5299e88607d722c190000000008b4830450220070aca44506c5cef3a16ed519d7c3c39f8aab192c4e1c90d065f37b8a4af6141022100a8e160b856c2d43d27d8fba71e5aef6405b8643ac4cb7cb3c462aced7f14711a0141046d11fee51b0e60666d5049a9101a72741df480b96ee26488a4d3466b95c9a40ac5eeef87e10a5cd336c19a84565f80fa6c547957b7700ff4dfbdefe76036c339ffffffff021bff3d11000000001976a91404943fdd508053c75000106d3bc6e2754dbcff1988ac2f15de00000000001976a914a266436d2965547608b9e15d9032a7b9d64fa43188ac00000000"));
// and one which spends it (e2769b09e784f32f62ef849763d4f45b98e07ba658647343b915ff832b110436)
var ch = new byte[] { 0x01, 0x00, 0x00, 0x00, 0x01, 0x6b, 0xff, 0x7f, 0xcd, 0x4f, 0x85, 0x65, 0xef, 0x40, 0x6d, 0xd5, 0xd6, 0x3d, 0x4f, 0xf9, 0x4f, 0x31, 0x8f, 0xe8, 0x20, 0x27, 0xfd, 0x4d, 0xc4, 0x51, 0xb0, 0x44, 0x74, 0x01, 0x9f, 0x74, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x49, 0x30, 0x46, 0x02, 0x21, 0x00, 0xda, 0x0d, 0xc6, 0xae, 0xce, 0xfe, 0x1e, 0x06, 0xef, 0xdf, 0x05, 0x77, 0x37, 0x57, 0xde, 0xb1, 0x68, 0x82, 0x09, 0x30, 0xe3, 0xb0, 0xd0, 0x3f, 0x46, 0xf5, 0xfc, 0xf1, 0x50, 0xbf, 0x99, 0x0c, 0x02, 0x21, 0x00, 0xd2, 0x5b, 0x5c, 0x87, 0x04, 0x00, 0x76, 0xe4, 0xf2, 0x53, 0xf8, 0x26, 0x2e, 0x76, 0x3e, 0x2d, 0xd5, 0x1e, 0x7f, 0xf0, 0xbe, 0x15, 0x77, 0x27, 0xc4, 0xbc, 0x42, 0x80, 0x7f, 0x17, 0xbd, 0x39, 0x01, 0x41, 0x04, 0xe6, 0xc2, 0x6e, 0xf6, 0x7d, 0xc6, 0x10, 0xd2, 0xcd, 0x19, 0x24, 0x84, 0x78, 0x9a, 0x6c, 0xf9, 0xae, 0xa9, 0x93, 0x0b, 0x94, 0x4b, 0x7e, 0x2d, 0xb5, 0x34, 0x2b, 0x9d, 0x9e, 0x5b, 0x9f, 0xf7, 0x9a, 0xff, 0x9a, 0x2e, 0xe1, 0x97, 0x8d, 0xd7, 0xfd, 0x01, 0xdf, 0xc5, 0x22, 0xee, 0x02, 0x28, 0x3d, 0x3b, 0x06, 0xa9, 0xd0, 0x3a, 0xcf, 0x80, 0x96, 0x96, 0x8d, 0x7d, 0xbb, 0x0f, 0x91, 0x78, 0xff, 0xff, 0xff, 0xff, 0x02, 0x8b, 0xa7, 0x94, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x19, 0x76, 0xa9, 0x14, 0xba, 0xde, 0xec, 0xfd, 0xef, 0x05, 0x07, 0x24, 0x7f, 0xc8, 0xf7, 0x42, 0x41, 0xd7, 0x3b, 0xc0, 0x39, 0x97, 0x2d, 0x7b, 0x88, 0xac, 0x40, 0x94, 0xa8, 0x02, 0x00, 0x00, 0x00, 0x00, 0x19, 0x76, 0xa9, 0x14, 0xc1, 0x09, 0x32, 0x48, 0x3f, 0xec, 0x93, 0xed, 0x51, 0xf5, 0xfe, 0x95, 0xe7, 0x25, 0x59, 0xf2, 0xcc, 0x70, 0x43, 0xf9, 0x88, 0xac, 0x00, 0x00, 0x00, 0x00, 0x00 };
var vch = ch.Take(ch.Length - 1).ToArray();
Transaction spendingTx = new Transaction();
spendingTx.ReadWrite(vch);
BloomFilter filter = new BloomFilter(10, 0.000001, 0, BloomFlags.UPDATE_ALL);
filter.Insert(uint256.Parse("0xb4749f017444b051c44dfd2720e88f314ff94f3dd6d56d40ef65854fcd7fff6b"));
Assert.True(filter.IsRelevantAndUpdate(tx), "Simple Bloom filter didn't match tx hash");
filter = new BloomFilter(10, 0.000001, 0, BloomFlags.UPDATE_ALL);
// byte-reversed tx hash
filter.Insert(ParseHex("6bff7fcd4f8565ef406dd5d63d4ff94f318fe82027fd4dc451b04474019f74b4"));
Assert.True(filter.IsRelevantAndUpdate(tx), "Simple Bloom filter didn't match manually serialized tx hash");
filter = new BloomFilter(10, 0.000001, 0, BloomFlags.UPDATE_ALL);
filter.Insert(ParseHex("30450220070aca44506c5cef3a16ed519d7c3c39f8aab192c4e1c90d065f37b8a4af6141022100a8e160b856c2d43d27d8fba71e5aef6405b8643ac4cb7cb3c462aced7f14711a01"));
Assert.True(filter.IsRelevantAndUpdate(tx), "Simple Bloom filter didn't match input signature");
filter = new BloomFilter(10, 0.000001, 0, BloomFlags.UPDATE_ALL);
filter.Insert(ParseHex("046d11fee51b0e60666d5049a9101a72741df480b96ee26488a4d3466b95c9a40ac5eeef87e10a5cd336c19a84565f80fa6c547957b7700ff4dfbdefe76036c339"));
Assert.True(filter.IsRelevantAndUpdate(tx), "Simple Bloom filter didn't match input pub key");
filter = new BloomFilter(10, 0.000001, 0, BloomFlags.UPDATE_ALL);
filter.Insert(ParseHex("04943fdd508053c75000106d3bc6e2754dbcff19"));
Assert.True(filter.IsRelevantAndUpdate(tx), "Simple Bloom filter didn't match output address");
Assert.True(filter.IsRelevantAndUpdate(spendingTx), "Simple Bloom filter didn't add output");
filter = new BloomFilter(10, 0.000001, 0, BloomFlags.UPDATE_ALL);
filter.Insert(ParseHex("a266436d2965547608b9e15d9032a7b9d64fa431"));
Assert.True(filter.IsRelevantAndUpdate(tx), "Simple Bloom filter didn't match output address");
filter = new BloomFilter(10, 0.000001, 0, BloomFlags.UPDATE_ALL);
filter.Insert(new OutPoint(uint256.Parse("0x90c122d70786e899529d71dbeba91ba216982fb6ba58f3bdaab65e73b7e9260b"), 0));
Assert.True(filter.IsRelevantAndUpdate(tx), "Simple Bloom filter didn't match COutPoint");
filter = new BloomFilter(10, 0.000001, 0, BloomFlags.UPDATE_ALL);
OutPoint prevOutPoint = new OutPoint(uint256.Parse("0x90c122d70786e899529d71dbeba91ba216982fb6ba58f3bdaab65e73b7e9260b"), 0);
{
var data = prevOutPoint.ToBytes();
filter.Insert(data);
}
Assert.True(filter.IsRelevantAndUpdate(tx), "Simple Bloom filter didn't match manually serialized COutPoint");
filter = new BloomFilter(10, 0.000001, 0, BloomFlags.UPDATE_ALL);
filter.Insert(uint256.Parse("00000009e784f32f62ef849763d4f45b98e07ba658647343b915ff832b110436"));
Assert.True(!filter.IsRelevantAndUpdate(tx), "Simple Bloom filter matched random tx hash");
filter = new BloomFilter(10, 0.000001, 0, BloomFlags.UPDATE_ALL);
filter.Insert(ParseHex("0000006d2965547608b9e15d9032a7b9d64fa431"));
Assert.True(!filter.IsRelevantAndUpdate(tx), "Simple Bloom filter matched random address");
filter = new BloomFilter(10, 0.000001, 0, BloomFlags.UPDATE_ALL);
filter.Insert(new OutPoint(uint256.Parse("0x90c122d70786e899529d71dbeba91ba216982fb6ba58f3bdaab65e73b7e9260b"), 1));
Assert.True(!filter.IsRelevantAndUpdate(tx), "Simple Bloom filter matched COutPoint for an output we didn't care about");
filter = new BloomFilter(10, 0.000001, 0, BloomFlags.UPDATE_ALL);
filter.Insert(new OutPoint(uint256.Parse("0x000000d70786e899529d71dbeba91ba216982fb6ba58f3bdaab65e73b7e9260b"), 0));
Assert.True(!filter.IsRelevantAndUpdate(tx), "Simple Bloom filter matched COutPoint for an output we didn't care about");
}
示例4: GetRawTransactionAsync
public async Task<Transaction> GetRawTransactionAsync(uint256 txid, bool throwIfNotFound = true)
{
var response = await SendCommandAsync(new RPCRequest("getrawtransaction", new[] { txid.ToString() }), throwIfNotFound).ConfigureAwait(false);
if (throwIfNotFound)
response.ThrowIfError();
if (response.Error != null && response.Error.Code == RPCErrorCode.RPC_INVALID_ADDRESS_OR_KEY)
return null;
response.ThrowIfError();
var tx = new Transaction();
tx.ReadWrite(Encoders.Hex.DecodeData(response.Result.ToString()));
return tx;
}
示例5: GetRawTransaction
public Transaction GetRawTransaction(uint256 txid)
{
var response = SendCommand("getrawtransaction", txid.ToString());
var tx = new Transaction();
tx.ReadWrite(Encoders.Hex.DecodeData(response.Result.ToString()));
return tx;
}