コード例 #1
0
        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());
            }
        }
コード例 #2
0
        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());
            }
        }
コード例 #3
0
 private static void WriteTimePointSec(MemoryStream ms, object value)
 {
     WriteUint32(ms, SerializationHelper.DateToTimePointSec((DateTime)value));
 }