public static TransactionPayloadLCS FromProgram(PayloadLCS payloadLCS) { var program = new ProgramLCS(); program.Code = payloadLCS.Code; program.Modules = payloadLCS.Modules; program.TransactionArguments = payloadLCS.TransactionArguments; return(new TransactionPayloadLCS { PayloadType = TransactionPayloadType.Program, Program = program }); }
public ProgramLCS GetProgram(byte[] source, ref int cursor) { var retVal = new ProgramLCS(); //struct Program // { // code: Vec<u8>, // Variable length byte array // args: Vec<TransactionArgument>, // Variable length array of TransactionArguments // modules: Vec<Vec<u8>>, // Variable length array of variable length byte arrays // } retVal.Code = source.LCSerialization <byte[]>(ref cursor); retVal.TransactionArguments = source.LCSerialization <List <TransactionArgumentLCS> >(ref cursor); retVal.Modules = source.LCSerialization <List <byte[]> >(ref cursor); return(retVal); }
public byte[] ProgramToByte(ProgramLCS source) { var result = ByteArrayToByte(source.Code); var argLen = U32ToByte((uint)source.TransactionArguments.Count); result = result.Concat(argLen).ToArray(); foreach (var arg in source.TransactionArguments) { var argData = LCSCore.LCSDeserialization(arg); result = result.Concat(argData).ToArray(); } var module = LCSCore.LCSDeserialization(source.Modules); result = result.Concat(module).ToArray(); return(result); }