From e8aeb461a9fa74944f9e3006747e9e7ebe22d91a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AB=8B=E5=85=9A=20Lidang?= Date: Mon, 18 Dec 2023 18:52:33 -0600 Subject: [PATCH] update --- darc-docs/docs/DARC Protocol/OpCodes.md | 18 ++++---- .../docs/darc.js/Access to a deployed DARC.md | 2 +- darc-protocol/contracts/protocol/Opcodes.sol | 30 ++++++++----- .../Runtime/Executable/InstructionMachine.sol | 44 +++++++++---------- .../Instructions/MembershipInstructions.sol | 8 ++-- .../Instructions/MoneyInstructions.sol | 4 +- .../Instructions/ParameterInstructions.sol | 6 +-- .../Instructions/PluginInstructions.sol | 18 ++++---- .../Instructions/TokenInstructions.sol | 4 +- .../Instructions/UtilityInstructions.sol | 4 +- .../protocol/Utilities/OpcodeMap.sol | 44 +++++++++---------- 11 files changed, 94 insertions(+), 88 deletions(-) diff --git a/darc-docs/docs/DARC Protocol/OpCodes.md b/darc-docs/docs/DARC Protocol/OpCodes.md index 7f76b0e..9558889 100644 --- a/darc-docs/docs/DARC Protocol/OpCodes.md +++ b/darc-docs/docs/DARC Protocol/OpCodes.md @@ -22,7 +22,7 @@ By defining these operations through opcodes, the DARC protocol ensures consiste |------------------------|-----------|--------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------| | UNDEFINED | 0 | N/A | Invalid Operation | | BATCH_MINT_TOKENS | 1 | `toAddressArray`: address[]
`tokenClassArray`: uint256[]
`amountArray`: uint256[] | Batch Mint Token Operation | -| BATCH_CREATE_TOKEN_CLASS | 2 | `nameArray`: string[]
`tokenIndexArray`: uint256[]
`votingWeightArray`: uint256[]
`dividendWeightArray`: uint256[] | Batch Create Token Class Operation | +| BATCH_CREATE_TOKEN_CLASSES | 2 | `nameArray`: string[]
`tokenIndexArray`: uint256[]
`votingWeightArray`: uint256[]
`dividendWeightArray`: uint256[] | Batch Create Token Class Operation | | BATCH_TRANSFER_TOKENS | 3 | `toAddressArray`: address[]
`tokenClassArray`: uint256[]
`amountArray`: uint256[] | Batch Transfer Token Operation | | BATCH_TRANSFER_TOKENS_FROM_TO | 4 | `fromAddressArray`: address[]
`toAddressArray`: address[]
`tokenClassArray`: uint256[]
`amountArray`: uint256[] | Batch Transfer Token From Addr A to Addr B Operation | | BATCH_BURN_TOKENS | 5 | `tokenClassArray`: uint256[]
`amountArray`: uint256[] | Batch Burn Token Operation | @@ -30,14 +30,14 @@ By defining these operations through opcodes, the DARC protocol ensures consiste | BATCH_ADD_MEMBERSHIP | 7 | `memberAddressArray`: address[]
`memberRoleArray`: uint256[]
`memberNameArray`: string[] | Batch Add Member Operation | | BATCH_SUSPEND_MEMBERSHIP | 8 | `memberAddressArray`: address[] | Batch Suspend Member Operation | | BATCH_RESUME_MEMBERSHIP | 9 | `memberAddressArray`: address[] | Batch Resume Member Operation | -| BATCH_CHANGE_MEMBER_ROLE | 10 | `memberAddressArray`: address[]
`memberRoleArray`: uint256[] | Batch Change Member Role Operation | -| BATCH_CHANGE_MEMBER_NAME | 11 | `memberAddressArray`: address[]
`memberNameArray`: string[] | Batch Change Member Name Operation | -| BATCH_ADD_PLUGIN | 12 | `pluginList`: Plugin[] | Batch Add Emergency Agent Operation | -| BATCH_ENABLE_PLUGIN | 13 | `pluginIndexArray`: uint256[]
`isBeforeOperationArray`: bool[] | Batch Enable Plugin Operation | -| BATCH_DISABLE_PLUGIN | 14 | `pluginIndexArray`: uint256[]
`isBeforeOperationArray`: bool[] | Batch Disable Plugin Operation | -| BATCH_ADD_AND_ENABLE_PLUGIN | 15 | `pluginList`: Plugin[] | Batch Add and Enable Plugin Operation | -| BATCH_SET_PARAMETER | 16 | `parameterNameArray`: MachineParameter[]
`parameterValueArray`: uint256[] | Batch Set Parameter Operation | -| BATCH_ADD_WITHDRAWABLE_BALANCE | 17 | `addressArray`: address[]
`amountArray`: uint256[] | Batch Add Withdrawable Balance Operation | +| BATCH_CHANGE_MEMBER_ROLES | 10 | `memberAddressArray`: address[]
`memberRoleArray`: uint256[] | Batch Change Member Role Operation | +| BATCH_CHANGE_MEMBER_NAMES | 11 | `memberAddressArray`: address[]
`memberNameArray`: string[] | Batch Change Member Name Operation | +| BATCH_ADD_PLUGINS | 12 | `pluginList`: Plugin[] | Batch Add Emergency Agent Operation | +| BATCH_ENABLE_PLUGINS | 13 | `pluginIndexArray`: uint256[]
`isBeforeOperationArray`: bool[] | Batch Enable Plugin Operation | +| BATCH_DISABLE_PLUGINS | 14 | `pluginIndexArray`: uint256[]
`isBeforeOperationArray`: bool[] | Batch Disable Plugin Operation | +| BATCH_ADD_AND_ENABLE_PLUGINS | 15 | `pluginList`: Plugin[] | Batch Add and Enable Plugin Operation | +| BATCH_SET_PARAMETERS | 16 | `parameterNameArray`: MachineParameter[]
`parameterValueArray`: uint256[] | Batch Set Parameter Operation | +| BATCH_ADD_WITHDRAWABLE_BALANCES | 17 | `addressArray`: address[]
`amountArray`: uint256[] | Batch Add Withdrawable Balance Operation | | BATCH_REVOKE_WITHDRAWABLE_BALANCE | 18 | `addressArray`: address[] | Batch Revoke Withdrawable Balance Operation | | BATCH_WITHDRAW_FROM_BALANCE | 19 | `addressArray`: address[]
`amountArray`: uint256[] | Batch Withdraw From Balance Operation | | BATCH_PAY_TO_MINT_TOKENS | 20 | `addressArray`: address[]
`tokenClassArray`: uint256[]
`amountArray`: uint256[]
`priceArray`: uint256[] | Batch Pay to Mint Tokens Operation | diff --git a/darc-docs/docs/darc.js/Access to a deployed DARC.md b/darc-docs/docs/darc.js/Access to a deployed DARC.md index 1111d88..b2bfc9b 100644 --- a/darc-docs/docs/darc.js/Access to a deployed DARC.md +++ b/darc-docs/docs/darc.js/Access to a deployed DARC.md @@ -43,7 +43,7 @@ batch_mint_tokens( // enable plugins 3, 4 before sandbox checking operation // and disable plugins 5, 6 after sandbox checking operation -batch_enable_plugins( +BATCH_ENABLE_PLUGINSs( [3,4,5,6], [true, true, false, false] ); diff --git a/darc-protocol/contracts/protocol/Opcodes.sol b/darc-protocol/contracts/protocol/Opcodes.sol index 46617c4..0a3eb6c 100644 --- a/darc-protocol/contracts/protocol/Opcodes.sol +++ b/darc-protocol/contracts/protocol/Opcodes.sol @@ -33,7 +33,7 @@ enum EnumOpcode { * * ID:2 */ - BATCH_CREATE_TOKEN_CLASS, + BATCH_CREATE_TOKEN_CLASSES, /** * @notice Batch Transfer Token Operation @@ -108,7 +108,7 @@ enum EnumOpcode { * * ID:10 */ - BATCH_CHANGE_MEMBER_ROLE, + BATCH_CHANGE_MEMBER_ROLES, /** * @notice Batch Change Member Name Operation @@ -117,14 +117,14 @@ enum EnumOpcode { * * ID:11 */ - BATCH_CHANGE_MEMBER_NAME, + BATCH_CHANGE_MEMBER_NAMES, /** * @notice Batch Add Emergency Agent Operation * @param Plugin[] pluginList: the array of the plugins * ID:12 */ - BATCH_ADD_PLUGIN, + BATCH_ADD_PLUGINS, /** * @notice Batch Enable Plugin Operation @@ -132,7 +132,7 @@ enum EnumOpcode { * @param BOOL_ARRAY bool[] isBeforeOperationArray: the array of the flag to indicate if the plugin is before operation * ID:13 */ - BATCH_ENABLE_PLUGIN, + BATCH_ENABLE_PLUGINS, /** * @notice Batch Disable Plugin Operation @@ -140,14 +140,14 @@ enum EnumOpcode { * @param BOOL_ARRAY bool[] isBeforeOperationArray: the array of the flag to indicate if the plugin is before operation * ID:14 */ - BATCH_DISABLE_PLUGIN, + BATCH_DISABLE_PLUGINS, /** * @notice Batch Add and Enable Plugin Operation * @param Plugin[] pluginList: the array of the plugins * ID:15 */ - BATCH_ADD_AND_ENABLE_PLUGIN, + BATCH_ADD_AND_ENABLE_PLUGINS, /** * @notice Batch Set Parameter Operation @@ -155,7 +155,7 @@ enum EnumOpcode { * @param UINT256_2DARRAY[0] uint256[] parameterValueArray: the array of the parameter value * ID:16 */ - BATCH_SET_PARAMETER, + BATCH_SET_PARAMETERS, /** * @notice Batch Add Withdrawable Balance Operation @@ -163,7 +163,7 @@ enum EnumOpcode { * @param uint256[] amountArray: the array of the amount to add withdrawable balance * ID:17 */ - BATCH_ADD_WITHDRAWABLE_BALANCE, + BATCH_ADD_WITHDRAWABLE_BALANCES, /** * @notice Batch Reduce Withdrawable Balance Operation @@ -171,14 +171,14 @@ enum EnumOpcode { * @param uint256[] amountArray: the array of the amount to substract withdrawable balance * ID:18 */ - BATCH_REDUCE_WITHDRAWABLE_BALANCE, + BATCH_REDUCE_WITHDRAWABLE_BALANCES, /** * @notice Batch Add Voting Rules * @param VotingRule[] votingRuleList: the array of the voting rules * ID:19 */ - BATCH_ADD_VOTING_RULE, + BATCH_ADD_VOTING_RULES, /** @@ -328,5 +328,11 @@ enum EnumOpcode { * @notice Upgrade the contract to the latest version * ID:37 */ - UPGRADE_TO_THE_LATEST + UPGRADE_TO_THE_LATEST, + + /** + * @notice Batch Pay to Trasnfer Tokens Operation + * ID:38 + */ + op_BATCH_PAY_TO_TRANSFER_TOKENS } diff --git a/darc-protocol/contracts/protocol/Runtime/Executable/InstructionMachine.sol b/darc-protocol/contracts/protocol/Runtime/Executable/InstructionMachine.sol index 5a271d2..10e440f 100644 --- a/darc-protocol/contracts/protocol/Runtime/Executable/InstructionMachine.sol +++ b/darc-protocol/contracts/protocol/Runtime/Executable/InstructionMachine.sol @@ -50,8 +50,8 @@ OfferDividendsInstructions } // opcode id == 2 - else if (operation.opcode == EnumOpcode.BATCH_CREATE_TOKEN_CLASS ){ - op_BATCH_CREATE_TOKEN_CLASS(operation, bIsSandbox); + else if (operation.opcode == EnumOpcode.BATCH_CREATE_TOKEN_CLASSES ){ + op_BATCH_CREATE_TOKEN_CLASSES(operation, bIsSandbox); } // opcode id == 3 @@ -90,53 +90,53 @@ OfferDividendsInstructions } // opcode id == 10 - else if (operation.opcode == EnumOpcode.BATCH_CHANGE_MEMBER_ROLE) { - op_BATCH_CHANGE_MEMBER_ROLE(operation, bIsSandbox); + else if (operation.opcode == EnumOpcode.BATCH_CHANGE_MEMBER_ROLES) { + op_BATCH_CHANGE_MEMBER_ROLES(operation, bIsSandbox); } // opcode id == 11 - else if (operation.opcode == EnumOpcode.op_BATCH_CHANGE_MEMBER_NAME) { - op_BATCH_CHANGE_MEMBER_NAME(operation, bIsSandbox); + else if (operation.opcode == EnumOpcode.BATCH_CHANGE_MEMBER_NAMES) { + op_BATCH_CHANGE_MEMBER_NAMES(operation, bIsSandbox); } // opcode id == 12 - else if (operation.opcode == EnumOpcode.BATCH_ADD_PLUGIN) { - op_BATCH_ADD_PLUGIN(operation, bIsSandbox); + else if (operation.opcode == EnumOpcode.BATCH_ADD_PLUGINS) { + op_BATCH_ADD_PLUGINS(operation, bIsSandbox); } // opcode id == 13 - else if (operation.opcode == EnumOpcode.BATCH_ENABLE_PLUGIN) { - op_BATCH_ENABLE_PLUGIN(operation, bIsSandbox); + else if (operation.opcode == EnumOpcode.BATCH_ENABLE_PLUGINS) { + op_BATCH_ENABLE_PLUGINS(operation, bIsSandbox); } // opcode id == 14 - else if (operation.opcode == EnumOpcode.BATCH_DISABLE_PLUGIN) { - op_BATCH_DISABLE_PLUGIN(operation, bIsSandbox); + else if (operation.opcode == EnumOpcode.BATCH_DISABLE_PLUGINS) { + op_BATCH_DISABLE_PLUGINS(operation, bIsSandbox); } // opcode id == 15 - else if (operation.opcode == EnumOpcode.BATCH_ADD_AND_ENABLE_PLUGIN){ - op_BATCH_ADD_AND_ENABLE_PLUGIN(operation, bIsSandbox); + else if (operation.opcode == EnumOpcode.BATCH_ADD_AND_ENABLE_PLUGINS){ + op_BATCH_ADD_AND_ENABLE_PLUGINS(operation, bIsSandbox); } // opcode id == 16 - else if (operation.opcode == EnumOpcode.BATCH_SET_PARAMETER) { - op_BATCH_SET_PARAMETER(operation, bIsSandbox); + else if (operation.opcode == EnumOpcode.BATCH_SET_PARAMETERS) { + op_BATCH_SET_PARAMETERS(operation, bIsSandbox); } // opcode id == 17 - else if (operation.opcode == EnumOpcode.BATCH_ADD_WITHDRAWABLE_BALANCE) { - op_BATCH_ADD_WITHDRAWABLE_BALANCE(operation, bIsSandbox); + else if (operation.opcode == EnumOpcode.BATCH_ADD_WITHDRAWABLE_BALANCES) { + op_BATCH_ADD_WITHDRAWABLE_BALANCES(operation, bIsSandbox); } // opcode id == 18 - else if (operation.opcode == EnumOpcode.BATCH_REDUCE_WITHDRAWABLE_BALANCE) { - op_BATCH_REDUCE_WITHDRAWABLE_BALANCE(operation, bIsSandbox); + else if (operation.opcode == EnumOpcode.BATCH_REDUCE_WITHDRAWABLE_BALANCES) { + op_BATCH_REDUCE_WITHDRAWABLE_BALANCES(operation, bIsSandbox); } // opcode id == 19 - else if (operation.opcode == EnumOpcode.BATCH_ADD_VOTING_RULE) { - op_BATCH_ADD_VOTING_RULE(operation, bIsSandbox); + else if (operation.opcode == EnumOpcode.BATCH_ADD_VOTING_RULES) { + op_BATCH_ADD_VOTING_RULES(operation, bIsSandbox); } // opcode id == 20 diff --git a/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/MembershipInstructions.sol b/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/MembershipInstructions.sol index a88e24e..abb33df 100644 --- a/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/MembershipInstructions.sol +++ b/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/MembershipInstructions.sol @@ -101,11 +101,11 @@ contract MembershipInstructions is MachineStateManager { /** - * @notice The function that executes the BATCH_CHANGE_MEMBER_ROLE operation + * @notice The function that executes the BATCH_CHANGE_MEMBER_ROLES operation * @param operation The operation to be executed * @param bIsSandbox The flag to indicate if the operation is being executed in sandbox */ - function op_BATCH_CHANGE_MEMBER_ROLE(Operation memory operation, bool bIsSandbox) internal { + function op_BATCH_CHANGE_MEMBER_ROLES(Operation memory operation, bool bIsSandbox) internal { // parameter 1 is the array of member addresses address[] memory members = operation.param.ADDRESS_2DARRAY[0]; // parameter 2 is the array of member role numbers @@ -122,11 +122,11 @@ contract MembershipInstructions is MachineStateManager { } } /** - * @notice The function that executes the BATCH_CHANGE_MEMBER_NAME operation + * @notice The function that executes the BATCH_CHANGE_MEMBER_NAMES operation * @param operation The operation to be executed * @param bIsSandbox The flag to indicate if the operation is being executed in sandbox */ - function op_BATCH_CHANGE_MEMBER_NAME(Operation memory operation, bool bIsSandbox) internal { + function op_BATCH_CHANGE_MEMBER_NAMES(Operation memory operation, bool bIsSandbox) internal { // parameter 1 is the array of member addresses address[] memory members = operation.param.ADDRESS_2DARRAY[0]; // parameter 2 is the array of member role names diff --git a/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/MoneyInstructions.sol b/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/MoneyInstructions.sol index a90fc04..e7434a6 100644 --- a/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/MoneyInstructions.sol +++ b/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/MoneyInstructions.sol @@ -15,11 +15,11 @@ import "../../../Utilities/ErrorMsg.sol"; */ contract MoneyInstructions is MachineStateManager { - function op_BATCH_ADD_WITHDRAWABLE_BALANCE(Operation memory operation, bool bIsSandbox) internal { + function op_BATCH_ADD_WITHDRAWABLE_BALANCES(Operation memory operation, bool bIsSandbox) internal { // todo } - function op_BATCH_REDUCE_WITHDRAWABLE_BALANCE(Operation memory operation, bool bIsSandbox) internal { + function op_BATCH_REDUCE_WITHDRAWABLE_BALANCES(Operation memory operation, bool bIsSandbox) internal { // todo } diff --git a/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/ParameterInstructions.sol b/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/ParameterInstructions.sol index 01b02d5..1ebdad5 100644 --- a/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/ParameterInstructions.sol +++ b/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/ParameterInstructions.sol @@ -9,18 +9,18 @@ import "../../../Plugin/Plugin.sol"; import "../../../Utilities/ErrorMsg.sol"; /** - * @title Implementation of the single instruction "BATCH_SET_PARAMETER" + * @title Implementation of the single instruction "BATCH_SET_PARAMETERS" * @author DARC Team * @notice null */ contract ParameterInstructions is MachineStateManager { /** - * @notice The implementation of the single instruction "BATCH_SET_PARAMETER" + * @notice The implementation of the single instruction "BATCH_SET_PARAMETERS" * @param operation The operation index to be executed * @param bIsSandbox The boolean flag that indicates if the operation is executed in sandbox */ - function op_BATCH_SET_PARAMETER(Operation memory operation, bool bIsSandbox) internal { + function op_BATCH_SET_PARAMETERS(Operation memory operation, bool bIsSandbox) internal { // parameter 1 is the Machine Parameter Array MachineParameter[] memory params = operation.param.PARAMETER_ARRAY; // parameter 2 is the uint256 array of the parameter UINT256_2DARRAY diff --git a/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/PluginInstructions.sol b/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/PluginInstructions.sol index 623906a..0110824 100644 --- a/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/PluginInstructions.sol +++ b/darc-protocol/contracts/protocol/Runtime/Executable/Instructions/PluginInstructions.sol @@ -9,18 +9,18 @@ import "../../../Plugin/Plugin.sol"; import "../../../Utilities/ErrorMsg.sol"; /** - * @title Implementation of BATCH_ADD_AND_ENABLE_PLUGIN operation + * @title Implementation of BATCH_ADD_AND_ENABLE_PLUGINS operation * @author DARC Team * @notice null */ contract PluginInstructions is MachineStateManager{ /** - * @notice The function that executes the BATCH_ADD_PLUGIN operation + * @notice The function that executes the BATCH_ADD_PLUGINS operation * @param operation The operation to be executed * @param bIsSandbox The flag to indicate if the operation is being executed in sandbox */ - function op_BATCH_ADD_PLUGIN(Operation memory operation, bool bIsSandbox) internal { + function op_BATCH_ADD_PLUGINS(Operation memory operation, bool bIsSandbox) internal { // parameter 1 is the array of plugins Plugin[] memory plugins = operation.param.PLUGIN_ARRAY; for (uint256 i=0;i