From 4afc5b1ee556e971074664139a39bccd7ba95bac Mon Sep 17 00:00:00 2001 From: Ha-jq <1825625846@qq.com> Date: Wed, 20 Nov 2024 20:13:41 +0800 Subject: [PATCH 1/5] Update tip-16.md AccountPermissionUpdateContract { bytes owner_address = 1; Permission owner = 2; //Empty is invalidate Permission witness = 3;//Can be empty repeated Permission actives = 4;//Empty is invalidate } * @param owner_address: The address of the account to be modified * @param owner :Modified owner-permission * @param witness :Modified witness permission (if it is a witness) * @param actives :Modified actives permission * @return The transaction Permission { enum PermissionType { Owner = 0; Witness = 1; Active = 2; } PermissionType type = 1; int32 id = 2; //Owner id=0, Witness id=1, Active id start by 2 string permission_name = 3; int64 threshold = 4; int32 parent_id = 5; bytes operations = 6; //1 bit 1 contract repeated Key keys = 7; } * @param type : Permission type, currently only supports three kind of permissions * @param id : Value is automatically set by the system * @param permission_name : Permission name, set by the user * @param threshold : Threshold, the corresponding operation is allowed only when the sum of the weights of the participating signatures exceeds the domain value. * @param parent_id : Currently only 0 * @param operations : A total of 32 bytes (256 bits), each of which represents the authority of a contract, when 1 means the right to own the contract * @param keys : The address and weight that jointly own the permission can be up to 5 keys. Key { bytes address = 1; int64 weight = 2; } * @param address : Address with this permission * @param weight : This address has weight for this permission --- tip-16.md | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/tip-16.md b/tip-16.md index 3c9cb151..b98d2dba 100644 --- a/tip-16.md +++ b/tip-16.md @@ -25,6 +25,49 @@ The scheme includes three kinds of permission, owner-permission, witness-permiss Alice is running a company, she creates an account as her company fund account. Alice adds Bob(Accountant), Carol(CFO) and Alice(CEO) into the owner-permission of her account. Bob's signature weight is 2, Carol's signature weight is 2, Alice's signature weight is 5. Owner-permission's signature weight threshold is 3. Alice's signature weight is bigger than the threshold(5>3), so her only signature is sufficient to make transactions. Bob's signature weight is smaller than the threshold(2<3), to make a transaction, Bob needs Carol's or Alice's signature if Carol approves, the total signature weight is 2+2>3, so the transaction can be executed. + AccountPermissionUpdateContract { + bytes owner_address = 1; + Permission owner = 2; //Empty is invalidate + Permission witness = 3;//Can be empty + repeated Permission actives = 4;//Empty is invalidate + } + * @param owner_address: The address of the account to be modified + * @param owner :Modified owner-permission + * @param witness :Modified witness permission (if it is a witness) + * @param actives :Modified actives permission + * @return The transaction + + + Permission { + enum PermissionType { + Owner = 0; + Witness = 1; + Active = 2; + } + PermissionType type = 1; + int32 id = 2; //Owner id=0, Witness id=1, Active id start by 2 + string permission_name = 3; + int64 threshold = 4; + int32 parent_id = 5; + bytes operations = 6; //1 bit 1 contract + repeated Key keys = 7; + } + * @param type : Permission type, currently only supports three kind of permissions + * @param id : Value is automatically set by the system + * @param permission_name : Permission name, set by the user + * @param threshold : Threshold, the corresponding operation is allowed only when the sum of the weights of the participating signatures exceeds the domain value. + * @param parent_id : Currently only 0 + * @param operations : A total of 32 bytes (256 bits), each of which represents the authority of a contract, when 1 means the right to own the contract + * @param keys : The address and weight that jointly own the permission can be up to 5 keys. + + + Key { + bytes address = 1; + int64 weight = 2; + } + * @param address : Address with this permission + * @param weight : This address has weight for this permission + **Scenario 2**: (Previous Scenario)\ From 6f623431de9592800c448874c7a8c9688e478853 Mon Sep 17 00:00:00 2001 From: Ha-jq <1825625846@qq.com> Date: Fri, 29 Nov 2024 04:40:32 +0800 Subject: [PATCH 2/5] Update tip-16.md --- tip-16.md | 41 ++++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/tip-16.md b/tip-16.md index b98d2dba..e9865725 100644 --- a/tip-16.md +++ b/tip-16.md @@ -22,13 +22,13 @@ The scheme includes three kinds of permission, owner-permission, witness-permiss **Scenario 1**: -Alice is running a company, she creates an account as her company fund account. Alice adds Bob(Accountant), Carol(CFO) and Alice(CEO) into the owner-permission of her account. Bob's signature weight is 2, Carol's signature weight is 2, Alice's signature weight is 5. Owner-permission's signature weight threshold is 3. Alice's signature weight is bigger than the threshold(5>3), so her only signature is sufficient to make transactions. Bob's signature weight is smaller than the threshold(2<3), to make a transaction, Bob needs Carol's or Alice's signature if Carol approves, the total signature weight is 2+2>3, so the transaction can be executed. +Alice is running a company, she creates an account as her company fund account. Alice adds Bob(Accountant), Carol(CFO) and Alice(CEO) into the owner-permission of her account. Bob's signature weight is 2, Carol's signature weight is 2, Alice's signature weight is 5. Owner-permission's signature weight threshold is 3. Alice's signature weight is bigger than the threshold(5>3), so her only signature is sufficient to make transactions. Bob's signature weight is smaller than the threshold(1), to make a transaction, Bob needs Carol's or Alice's signature if Carol approves, the total signature weight is 1, so the transaction can be executed. AccountPermissionUpdateContract { bytes owner_address = 1; - Permission owner = 2; //Empty is invalidate - Permission witness = 3;//Can be empty + Permission owner = 1; //Empty is invalidate + Permission witness = 1;//Can be empty repeated Permission actives = 4;//Empty is invalidate } * @param owner_address: The address of the account to be modified @@ -40,12 +40,12 @@ Alice is running a company, she creates an account as her company fund account. Permission { enum PermissionType { - Owner = 0; + Owner = 1; Witness = 1; - Active = 2; + Active = 1; } PermissionType type = 1; - int32 id = 2; //Owner id=0, Witness id=1, Active id start by 2 + int32 id = 1; //Owner id=0, Witness id=1, Active id start by 2 string permission_name = 3; int64 threshold = 4; int32 parent_id = 5; @@ -63,10 +63,12 @@ Alice is running a company, she creates an account as her company fund account. Key { bytes address = 1; - int64 weight = 2; + int64 weight = 1; } - * @param address : Address with this permission - * @param weight : This address has weight for this permission + * @param address : Add + + * + **Scenario 2**: @@ -90,7 +92,7 @@ Alice can assign witness-permission to the administrator. Since the administrato ## Motivation 1. Support account Access Control; -2. An account can be controlled by several private keys, in case of private key lost; + ## Methods @@ -99,8 +101,8 @@ Alice can assign witness-permission to the administrator. Since the administrato AccountPermissionUpdateContract { bytes owner_address = 1; - Permission owner = 2; //Empty is invalidate - Permission witness = 3;//Can be empty + Permission owner = 1; //Empty is invalidate + Permission witness = 1;//Can be empty repeated Permission actives = 4;//Empty is invalidate } * @param owner_address: The address of the account to be modified @@ -112,9 +114,10 @@ Alice can assign witness-permission to the administrator. Since the administrato Permission { enum PermissionType { - Owner = 0; + Owner = 1; Witness = 1; - Active = 2; + Active = 1; + } PermissionType type = 1; int32 id = 2; //Owner id=0, Witness id=1, Active id start by 2 @@ -135,7 +138,7 @@ Alice can assign witness-permission to the administrator. Since the administrato Key { bytes address = 1; - int64 weight = 2; + int64 weight = 1; } * @param address : Address with this permission * @param weight : This address has weight for this permission @@ -143,7 +146,7 @@ Alice can assign witness-permission to the administrator. Since the administrato ``` #### GetTransactionSignWeight * @param transaction - * @return The transaction sign weight + ``` TransactionSignWeight { @@ -157,11 +160,11 @@ TransactionSignWeight { OTHER_ERROR = 20; } response_code code = 1; - string message = 2; + string message = 1; } Permission permission = 1; - repeated bytes approved_list = 2; + repeated bytes approved_list = 1; int64 current_weight = 3; Result result = 4; TransactionExtention transaction = 5; @@ -171,5 +174,5 @@ TransactionSignWeight { #### AddSign * @param transaction - * @return The transaction + From 6e92a45101c9bd594aa69357496a354d2451f4dd Mon Sep 17 00:00:00 2001 From: Ha-jq <1825625846@qq.com> Date: Fri, 29 Nov 2024 04:49:15 +0800 Subject: [PATCH 3/5] Update tip-16.md --- tip-16.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tip-16.md b/tip-16.md index e9865725..c545626f 100644 --- a/tip-16.md +++ b/tip-16.md @@ -67,7 +67,7 @@ Alice is running a company, she creates an account as her company fund account. } * @param address : Add - * + **Scenario 2**: @@ -96,7 +96,7 @@ Alice can assign witness-permission to the administrator. Since the administrato ## Methods -#### AccountPermissionUpdate + ``` AccountPermissionUpdateContract { @@ -120,28 +120,28 @@ Alice can assign witness-permission to the administrator. Since the administrato } PermissionType type = 1; - int32 id = 2; //Owner id=0, Witness id=1, Active id start by 2 + int32 id = 2; //Owner id=1, Witness id=1, Active id start by 2 string permission_name = 3; int64 threshold = 4; int32 parent_id = 5; bytes operations = 6; //1 bit 1 contract repeated Key keys = 7; } - * @param type : Permission type, currently only supports three kind of permissions + * @param type : Permission type, currently only * @param id : Value is automatically set by the system * @param permission_name : Permission name, set by the user * @param threshold : Threshold, the corresponding operation is allowed only when the sum of the weights of the participating signatures exceeds the domain value. * @param parent_id : Currently only 0 * @param operations : A total of 32 bytes (256 bits), each of which represents the authority of a contract, when 1 means the right to own the contract - * @param keys : The address and weight that jointly own the permission can be up to 5 keys. + * @param keys : The address and weight that jointly own Key { bytes address = 1; int64 weight = 1; } - * @param address : Address with this permission - * @param weight : This address has weight for this permission + * @param address : + * @param weight : This address ``` #### GetTransactionSignWeight @@ -152,11 +152,11 @@ Alice can assign witness-permission to the administrator. Since the administrato TransactionSignWeight { message Result { enum response_code { - ENOUGH_PERMISSION = 0; + ENOUGH_PERMISSION = 1; NOT_ENOUGH_PERMISSION = 1; SIGNATURE_FORMAT_ERROR = 2; COMPUTE_ADDRESS_ERROR = 3; - PERMISSION_ERROR = 4; //The key is not in permission + PERMISSION_ERROR = 4; //The key is not in permissio OTHER_ERROR = 20; } response_code code = 1; From 9e51b964d2d65fa416e0b41f034613e0656a20e9 Mon Sep 17 00:00:00 2001 From: Ha-jq <1825625846@qq.com> Date: Fri, 29 Nov 2024 04:53:59 +0800 Subject: [PATCH 4/5] Update tip-16.md --- tip-16.md | 47 +++++++++-------------------------------------- 1 file changed, 9 insertions(+), 38 deletions(-) diff --git a/tip-16.md b/tip-16.md index c545626f..9cd94d56 100644 --- a/tip-16.md +++ b/tip-16.md @@ -34,38 +34,22 @@ Alice is running a company, she creates an account as her company fund account. * @param owner_address: The address of the account to be modified * @param owner :Modified owner-permission * @param witness :Modified witness permission (if it is a witness) - * @param actives :Modified actives permission - * @return The transaction + * @param actives + Permission { enum PermissionType { Owner = 1; Witness = 1; - Active = 1; - } - PermissionType type = 1; - int32 id = 1; //Owner id=0, Witness id=1, Active id start by 2 - string permission_name = 3; - int64 threshold = 4; - int32 parent_id = 5; - bytes operations = 6; //1 bit 1 contract - repeated Key keys = 7; - } - * @param type : Permission type, currently only supports three kind of permissions - * @param id : Value is automatically set by the system - * @param permission_name : Permission name, set by the user - * @param threshold : Threshold, the corresponding operation is allowed only when the sum of the weights of the participating signatures exceeds the domain value. - * @param parent_id : Currently only 0 - * @param operations : A total of 32 bytes (256 bits), each of which represents the authority of a contract, when 1 means the right to own the contract - * @param keys : The address and weight that jointly own the permission can be up to 5 keys. + Key { bytes address = 1; int64 weight = 1; } - * @param address : Add + * @param address @@ -83,11 +67,6 @@ Alice is running a company, she creates an account as her business account. Alic **Scenario 4**: -(Previous Scenario)\ -Alice has a witness account, if she wants to deploy a node but doesn't know how to deploy, she needs to provide the account's private key to the program administrator.\ -(Current Scenario) \ -Alice can assign witness-permission to the administrator. Since the administrator only has the producing-block permission, there is no TRX transfer permission, and even if the private key of the administrator on the server is compromised, TRX will not be lost. - ## Motivation @@ -119,13 +98,8 @@ Alice can assign witness-permission to the administrator. Since the administrato Active = 1; } - PermissionType type = 1; - int32 id = 2; //Owner id=1, Witness id=1, Active id start by 2 - string permission_name = 3; - int64 threshold = 4; - int32 parent_id = 5; - bytes operations = 6; //1 bit 1 contract - repeated Key keys = 7; + + } * @param type : Permission type, currently only * @param id : Value is automatically set by the system @@ -141,7 +115,7 @@ Alice can assign witness-permission to the administrator. Since the administrato int64 weight = 1; } * @param address : - * @param weight : This address + ``` #### GetTransactionSignWeight @@ -154,9 +128,7 @@ TransactionSignWeight { enum response_code { ENOUGH_PERMISSION = 1; NOT_ENOUGH_PERMISSION = 1; - SIGNATURE_FORMAT_ERROR = 2; - COMPUTE_ADDRESS_ERROR = 3; - PERMISSION_ERROR = 4; //The key is not in permissio + OTHER_ERROR = 20; } response_code code = 1; @@ -165,8 +137,7 @@ TransactionSignWeight { Permission permission = 1; repeated bytes approved_list = 1; - int64 current_weight = 3; - Result result = 4; + TransactionExtention transaction = 5; } From 90a3b094fbf781fd4e50c2d78fbb0bd79f3ccf77 Mon Sep 17 00:00:00 2001 From: Ha-jq <1825625846@qq.com> Date: Fri, 29 Nov 2024 04:58:31 +0800 Subject: [PATCH 5/5] Update tip-16.md --- tip-16.md | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/tip-16.md b/tip-16.md index 9cd94d56..296361b4 100644 --- a/tip-16.md +++ b/tip-16.md @@ -17,12 +17,10 @@ This doc describes the standard interface of Account Multi-signature ## Abstract -Standard transactions on cryptocurrency networks can be called single-signature transactions because they require only one digital signature for a transaction to be done. Multi-signature is the requirement that signatures of the transactions must reach the weight customized before they can be executed. \ -The scheme includes three kinds of permission, owner-permission, witness-permission, and active-permission, where owner-permission has the authority to execute all contracts, witness-permission is used for generating blocks, and active-permission is custom permission (a combination of contracts permission sets) -**Scenario 1**: -Alice is running a company, she creates an account as her company fund account. Alice adds Bob(Accountant), Carol(CFO) and Alice(CEO) into the owner-permission of her account. Bob's signature weight is 2, Carol's signature weight is 2, Alice's signature weight is 5. Owner-permission's signature weight threshold is 3. Alice's signature weight is bigger than the threshold(5>3), so her only signature is sufficient to make transactions. Bob's signature weight is smaller than the threshold(1), to make a transaction, Bob needs Carol's or Alice's signature if Carol approves, the total signature weight is 1, so the transaction can be executed. + + AccountPermissionUpdateContract { @@ -47,7 +45,7 @@ Alice is running a company, she creates an account as her company fund account. Key { bytes address = 1; - int64 weight = 1; + } * @param address @@ -112,14 +110,12 @@ Alice is running a company, she creates an account as her business account. Alic Key { bytes address = 1; - int64 weight = 1; - } - * @param address : + + ``` -#### GetTransactionSignWeight - * @param transaction + * @param transaction ``` @@ -138,12 +134,9 @@ TransactionSignWeight { Permission permission = 1; repeated bytes approved_list = 1; - TransactionExtention transaction = 5; -} ``` -#### AddSign - * @param transaction +@param transaction