diff --git a/documentation.swagger.json b/documentation.swagger.json index 6f15b44..e273de9 100644 --- a/documentation.swagger.json +++ b/documentation.swagger.json @@ -1521,6 +1521,43 @@ } } }, + "modelMultiSignatureInfo": { + "type": "object", + "properties": { + "Addresses": { + "type": "array", + "items": { + "type": "string" + } + }, + "MinimumSignatures": { + "type": "integer", + "format": "int64" + }, + "Nonce": { + "type": "string", + "format": "int64" + } + } + }, + "modelMultiSignatureTransactionBody": { + "type": "object", + "properties": { + "MultiSignatureInfo": { + "title": "MultiSignatureInfo represent the information of the multisig-address", + "$ref": "#/definitions/modelMultiSignatureInfo" + }, + "SignatureInfo": { + "title": "List of participantAddress-participantSignature with its tx hash", + "$ref": "#/definitions/modelSignatureInfo" + }, + "UnsignedTransactionBytes": { + "type": "string", + "format": "byte", + "title": "Unsigned transaction bytes that will be executed once the transaction is valid" + } + } + }, "modelNode": { "type": "object", "title": "NodeInfo represent the node information data structure", @@ -1836,6 +1873,22 @@ } } }, + "modelSignatureInfo": { + "type": "object", + "properties": { + "Signatures": { + "type": "object", + "additionalProperties": { + "type": "string", + "format": "byte" + } + }, + "TransactionHash": { + "type": "string", + "format": "byte" + } + } + }, "modelSkippedBlocksmith": { "type": "object", "properties": { @@ -2034,6 +2087,9 @@ "emptyTransactionBody": { "$ref": "#/definitions/modelEmptyTransactionBody" }, + "multiSignatureTransactionBody": { + "$ref": "#/definitions/modelMultiSignatureTransactionBody" + }, "nodeRegistrationTransactionBody": { "$ref": "#/definitions/modelNodeRegistrationTransactionBody" }, diff --git a/model/multiSignature.proto b/model/multiSignature.proto new file mode 100644 index 0000000..1c18a2c --- /dev/null +++ b/model/multiSignature.proto @@ -0,0 +1,15 @@ +syntax = "proto3"; + +package model; +option go_package = "github.com/zoobc/zoobc-core/common/model"; + +message MultiSignatureInfo { + uint32 MinimumSignatures = 1; + int64 Nonce = 2 [ jstype = JS_STRING ]; + repeated string Addresses = 3; +} + +message SignatureInfo { + bytes TransactionHash = 1; + map Signatures = 2; +} diff --git a/model/transaction.proto b/model/transaction.proto index aad1f3d..badfa97 100644 --- a/model/transaction.proto +++ b/model/transaction.proto @@ -8,6 +8,7 @@ import "model/pagination.proto"; import "model/batchReceipt.proto"; import "model/nodeRegistration.proto"; import "model/escrow.proto"; +import "model/multiSignature.proto"; // Transaction represent the transaction data structure stored in the database message Transaction { @@ -35,10 +36,11 @@ message Transaction { SetupAccountDatasetTransactionBody setupAccountDatasetTransactionBody = 20; RemoveAccountDatasetTransactionBody removeAccountDatasetTransactionBody = 21; ApprovalEscrowTransactionBody approvalEscrowTransactionBody = 22; + MultiSignatureTransactionBody multiSignatureTransactionBody = 23; } - bytes Signature = 23; + bytes Signature = 24; // nullable - Escrow Escrow = 24; + Escrow Escrow = 25; } enum TransactionType { @@ -60,6 +62,8 @@ enum TransactionType { RemoveAccountDatasetTransaction = 259; // in bytes: []byte{4,0,0,0} ApprovalEscrowTransaction = 4; + // in bytes: []byte{5,0,0,0} + MultiSignatureTransaction = 5; } @@ -125,6 +129,15 @@ message ApprovalEscrowTransactionBody { int64 TransactionID = 2 [ jstype = JS_STRING ]; } +message MultiSignatureTransactionBody { + // MultiSignatureInfo represent the information of the multisig-address + MultiSignatureInfo MultiSignatureInfo = 1; + // Unsigned transaction bytes that will be executed once the transaction is valid + bytes UnsignedTransactionBytes = 2; + // List of participantAddress-participantSignature with its tx hash + SignatureInfo SignatureInfo = 3; +} + //------------ // P2P Content //------------