public async Task <byte[]> SerializePackedTransaction(Transaction trx) { int actionIndex = 0; var abiResponses = await GetTransactionAbis(trx); using (MemoryStream ms = new MemoryStream()) { //trx headers WriteUint32(ms, SerializationHelper.DateToTimePointSec(trx.Expiration)); WriteUint16(ms, trx.RefBlockNum); WriteUint32(ms, trx.RefBlockPrefix); //trx info WriteVarUint32(ms, trx.MaxNetUsageWords); WriteByte(ms, trx.MaxCpuUsageMs); WriteVarUint32(ms, trx.DelaySec); WriteVarUint32(ms, (UInt32)trx.ContextFreeActions.Count); foreach (var action in trx.ContextFreeActions) { WriteAction(ms, action, abiResponses[actionIndex++]); } WriteVarUint32(ms, (UInt32)trx.Actions.Count); foreach (var action in trx.Actions) { WriteAction(ms, action, abiResponses[actionIndex++]); } WriteVarUint32(ms, (UInt32)trx.TransactionExtensions.Count); foreach (var extension in trx.TransactionExtensions) { WriteExtension(ms, extension); } return(ms.ToArray()); } }
public async Task <byte[]> SerializePackedTransaction(Transaction trx) { int actionIndex = 0; var abiResponses = await GetTransactionAbis(trx); using (MemoryStream ms = new MemoryStream()) { //trx headers WriteUint32(ms, SerializationHelper.DateToTimePointSec(trx.expiration)); WriteUint16(ms, trx.ref_block_num); WriteUint32(ms, trx.ref_block_prefix); //trx info WriteVarUint32(ms, trx.max_net_usage_words); WriteByte(ms, trx.max_cpu_usage_ms); WriteVarUint32(ms, trx.delay_sec); WriteVarUint32(ms, (UInt32)trx.context_free_actions.Count); foreach (var action in trx.context_free_actions) { WriteAction(ms, action, abiResponses[actionIndex++]); } WriteVarUint32(ms, (UInt32)trx.actions.Count); foreach (var action in trx.actions) { WriteAction(ms, action, abiResponses[actionIndex++]); } WriteVarUint32(ms, (UInt32)trx.transaction_extensions.Count); foreach (var extension in trx.transaction_extensions) { WriteExtension(ms, extension); } return(ms.ToArray()); } }
private static void WriteTimePointSec(MemoryStream ms, object value) { WriteUint32(ms, SerializationHelper.DateToTimePointSec((DateTime)value)); }