public static Gtx Decode(byte[] encodedMessage) { var gtx = new Gtx(); var gtxTransaction = new ASN1.AsnReader(encodedMessage); var gtxValue = GTXValue.Decode(gtxTransaction); var gtxPayload = gtxValue.Array[0]; gtx.BlockchainID = PostchainUtil.ByteArrayToString(gtxPayload.Array[0].ByteArray); foreach (var opArr in gtxPayload.Array[1].Array) { var op = opArr.ToObjectArray(); var opName = opArr.Array[0].String; var opArgs = opArr.Array[1].ToObjectArray(); gtx.AddOperationToGtx(opName, opArgs); } foreach (var signer in gtxPayload.Array[2].Array) { gtx.AddSignerToGtx(signer.ByteArray); } foreach (var sig in gtxValue.Array[1].Array) { gtx.Signatures.Add(sig.ByteArray); } return(gtx); }
private async void Send() { var gtxBytes = this.GtxObject.Serialize(); await this.RestClient.PostTransaction(gtxBytes); this.GtxObject = null; }
public byte[] Encode() { var gtxBody = new List <object>(); gtxBody.Add(GetGtvTxBody()); gtxBody.Add(this.Signatures.ToArray()); return(Gtx.ArgToGTXValue(gtxBody.ToArray()).Encode()); }
public Operation(string opName, object[] args) : this() { this.OpName = opName; this._rawArgs = args; foreach (var opArg in args) { Args.Add(Gtx.ArgToGTXValue(opArg)); } }
public GTXValue ToGtxValue() { var gtxValue = new GTXValue(); gtxValue.Choice = GTXValueChoice.Array; gtxValue.Array = new List <GTXValue>() { Gtx.ArgToGTXValue(this.OpName) }; gtxValue.Array.AddRange(this.Args); return(gtxValue); }
///<summary> ///Create a new Transaction. ///</summary> ///<param name = "signers">Array of signers (can be null).</param> ///<returns>New Transaction object.</returns> public Transaction NewTransaction(byte[][] signers) { Gtx newGtx = new Gtx(RestApiClient.BlockchainRID); foreach (byte[] signer in signers) { newGtx.AddSignerToGtx(signer); } Transaction req = new Transaction(newGtx, this.RestApiClient); return(req); }
public static Gtx DeserializeGTX(byte[] encodedMessage) { return(Gtx.Decode(encodedMessage)); }
public byte[] CalculateLeafHash(object value) { var gtxValue = Gtx.ArgToGTXValue(value); return(CalculateHashOfValueInternal(gtxValue)); }
internal Transaction(Gtx gtx, RESTClient restClient) { this.GtxObject = gtx; this.RestClient = restClient; }