diff --git a/darc-protocol/contracts/protocol/MachineStateManager.sol b/darc-protocol/contracts/protocol/MachineStateManager.sol index 76a96a8..1f01601 100644 --- a/darc-protocol/contracts/protocol/MachineStateManager.sol +++ b/darc-protocol/contracts/protocol/MachineStateManager.sol @@ -98,7 +98,7 @@ contract MachineStateManager { EnumLogicalOperatorType.UNDEFINED, // expression: operation == initialOwnerAddress - EnumConditionExpression.UNDEFINED, + 0, new uint256[](0), NodeParam( new string[](0), @@ -129,7 +129,7 @@ contract MachineStateManager { EnumLogicalOperatorType.UNDEFINED, // expression: operation == initialOwnerAddress - EnumConditionExpression.UNDEFINED, + 0, new uint256[](0), NodeParam( new string[](0), diff --git a/darc-protocol/contracts/protocol/Opcodes.sol b/darc-protocol/contracts/protocol/Opcodes.sol index 5d76a45..1f5967c 100644 --- a/darc-protocol/contracts/protocol/Opcodes.sol +++ b/darc-protocol/contracts/protocol/Opcodes.sol @@ -262,6 +262,7 @@ enum EnumOpcode { /** * @notice Set the approval for all transfer operations by address * @paran address: the address to set approval for all transfer operations + * ADDRESS_2DARRAY[0][0] targetAddress * ID:29 */ SET_APPROVAL_FOR_ALL_OPERATIONS, diff --git a/darc-protocol/contracts/protocol/Plugin/ConditionExpressionFactory.sol b/darc-protocol/contracts/protocol/Plugin/ConditionExpressionFactory.sol index db9e0d1..52999cd 100644 --- a/darc-protocol/contracts/protocol/Plugin/ConditionExpressionFactory.sol +++ b/darc-protocol/contracts/protocol/Plugin/ConditionExpressionFactory.sol @@ -6,7 +6,7 @@ import "../Utilities/StringUtils.sol"; import "../Program.sol"; // import all the condition expression big list -import "./EnumConditionExpression.sol"; +//import "./EnumConditionExpression.sol"; // import each implementation of the condition expression function import "./Conditions/OperatorExpressionFunction.sol"; @@ -38,7 +38,7 @@ contract ConditionExpressionFactory is */ function conditionExpressionCheck(bool bIsBeforeOperation, Operation memory operation, uint256 pluginIndex, uint256 nodeIndex) internal view returns (bool) { // get current condition expression node - EnumConditionExpression exp = bIsBeforeOperation ? + uint256 exp = bIsBeforeOperation ? currentMachineState.beforeOpPlugins[pluginIndex].conditionNodes[nodeIndex].conditionExpression : currentMachineState.afterOpPlugins[pluginIndex].conditionNodes[nodeIndex].conditionExpression; @@ -48,13 +48,13 @@ contract ConditionExpressionFactory is currentMachineState.afterOpPlugins[pluginIndex].conditionNodes[nodeIndex].param; // check the condition expression node - if (exp == EnumConditionExpression.OPERATION_EQUALS) { + if (exp == 151) { return exp_OPERATION_EQUALS(operation, param); } - else if (exp == EnumConditionExpression.OPERATOR_NAME_EQUALS) { + else if (exp == 1) { return false;//exp_OPERATOR_NAME_EQUALS(bIsBeforeOperation, operation, paramList); } - else if (exp == EnumConditionExpression.OPERATOR_ADDRESS_EQUALS) { + else if (exp == 3) { return exp_OPERATOR_ADDRESS_EQUALS(bIsBeforeOperation, operation, param); } diff --git a/darc-protocol/contracts/protocol/Plugin/EnumConditionExpression.sol b/darc-protocol/contracts/protocol/Plugin/EnumConditionExpression.sol.old similarity index 54% rename from darc-protocol/contracts/protocol/Plugin/EnumConditionExpression.sol rename to darc-protocol/contracts/protocol/Plugin/EnumConditionExpression.sol.old index 05d0c0f..a88eb56 100644 --- a/darc-protocol/contracts/protocol/Plugin/EnumConditionExpression.sol +++ b/darc-protocol/contracts/protocol/Plugin/EnumConditionExpression.sol.old @@ -25,9 +25,10 @@ enum EnumConditionExpression{ OPERATOR_ROLE_IN_RANGE, // params: uint256 operatorRoleIndex OPERATOR_ROLE_IN_LIST, // params: uint256[] operatorRoleIndexArray - OPERATOR_TOKEN_X_LARGER_THAN, // params: uint256 token class, uint256 amount - OPERATOR_TOKEN_X_LESS_THAN, // params: uint256 token class, uint256 amount - OPERATOR_TOKEN_X_IN_RANGE, // params: uint256 token class, uint256 amount + OPERATOR_TOKEN_X_AMOUNT_LARGER_THAN, // params: uint256 token class, uint256 amount + OPERATOR_TOKEN_X_AMOUNT_LESS_THAN, // params: uint256 token class, uint256 amount + OPERATOR_TOKEN_X_AMOUNT_IN_RANGE, // params: uint256 token class, uint256 amount + OPERATOR_TOKEN_X_AMOUNT_EQUALS, // params: uint256 token class, uint256 amount OPERATOR_TOKEN_X_PERCENTAGE_LARGER_THAN, // params: uint256 token class, uint256 percentage OPERATOR_TOKEN_X_PERCENTAGE_LESS_THAN, // params: uint256 token class, uint256 percentage OPERATOR_TOKEN_X_PERCENTAGE_IN_RANGE, // params: uint256 token class, uint256 percentage @@ -46,10 +47,12 @@ enum EnumConditionExpression{ OPERATOR_WITHDRAWABLE_CASH_LARGER_THAN, // params: uint256 amount OPERATOR_WITHDRAWABLE_CASH_LESS_THAN, // params: uint256 amount OPERATOR_WITHDRAWABLE_CASH_IN_RANGE, // params: uint256 amount + OPERATOR_WITHDRAWABLE_DIVIDENDS_LARGER_THAN, // params: uint256 amount + OPERATOR_WITHDRAWABLE_DIVIDENDS_LESS_THAN, // params: uint256 amount + OPERATOR_WITHDRAWABLE_DIVIDENDS_IN_RANGE, // params: uint256 amount + + OPERATOR_ADDRESS_IN_LIST, // params: address[] the list of addresses - OPERATOR_ADDRESS_IN_LIST, // params: address[] the list of addresses、 - OPERATOR_NAME_IN_LIST, // params: string[] the list of names - PlaceHolder1, PlaceHolder2, PlaceHolder3, @@ -78,15 +81,30 @@ enum EnumConditionExpression{ TIMESTAMP_LARGER_THAN, TIMESTAMP_LESS_THAN, TIMESTAMP_IN_RANGE, - MEMBER_VOTING_WEIGHT_LARGER_THAN, - MEMBER_VOTING_WEIGHT_LESS_THAN, - MEMBER_VOTING_WEIGHT_IN_RANGE, - MEMBER_DIVIDEND_WEIGHT_LARGER_THAN, - MEMBER_DIVIDEND_WEIGHT_LESS_THAN, - MEMBER_DIVIDEND_WEIGHT_IN_RANGE, - MEMBER_TOKEN_X_LARGER_THAN, - MEMBER_TOKEN_X_LESS_THAN, - MEMBER_TOKEN_X_IN_RANGE, + + DATE_YEAR_LARGER_THAN, + DATE_YEAR_LESS_THAN, + DATE_YEAR_IN_RANGE, + DATE_MONTH_LARGER_THAN, + DATE_MONTH_LESS_THAN, + DATE_MONTH_IN_RANGE, + DATE_DAY_LARGER_THAN, + DATE_DAY_LESS_THAN, + DATE_DAY_IN_RANGE, + DATE_HOUR_LARGER_THAN, + DATE_HOUR_LESS_THAN, + DATE_HOUR_IN_RANGE, + + ADDRESS_VOTING_WEIGHT_LARGER_THAN, + ADDRESS_VOTING_WEIGHT_LESS_THAN, + ADDRESS_VOTING_WEIGHT_IN_RANGE, + ADDRESS_DIVIDEND_WEIGHT_LARGER_THAN, + ADDRESS_DIVIDEND_WEIGHT_LESS_THAN, + ADDRESS_DIVIDEND_WEIGHT_IN_RANGE, + ADDRESS_TOKEN_X_LARGER_THAN, + ADDRESS_TOKEN_X_LESS_THAN, + ADDRESS_TOKEN_X_IN_RANGE, + TOTAL_VOTING_WEIGHT_LARGER_THAN, TOTAL_VOTING_WEIGHT_LESS_THAN, TOTAL_VOTING_WEIGHT_IN_RANGE, @@ -97,6 +115,19 @@ enum EnumConditionExpression{ TOTAL_CASH_LESS_THAN, TOTAL_CASH_IN_RANGE, TOTAL_CASH_EQUALS, + + TOKEN_IN_list_VOTING_WEIGHT_LARGER_THAN, + TOKEN_IN_list_VOTING_WEIGHT_LESS_THAN, + TOKEN_IN_list_VOTING_WEIGHT_IN_RANGE, + TOKEN_IN_list_DIVIDEND_WEIGHT_LARGER_THAN, + TOKEN_IN_list_DIVIDEND_WEIGHT_LESS_THAN, + TOKEN_IN_list_DIVIDEND_WEIGHT_IN_RANGE, + TOKEN_IN_list_AMOUNT_LARGER_THAN, + TOKEN_IN_list_AMOUNT_LESS_THAN, + TOKEN_IN_list_AMOUNT_IN_RANGE, + TOKEN_IN_list_AMOUNT_EQUALS, + + PlaceHolder21, PlaceHolder22, PlaceHolder23, @@ -152,30 +183,62 @@ enum EnumConditionExpression{ OPERATION_EVERYONE_SINCE_LAST_TIME_LARGER_THAN, OPERATION_EVERYONE_SINCE_LAST_TIME_LESS_THAN, OPERATION_EVERYONE_SINCE_LAST_TIME_IN_RANGE, - OPEARTION_BY_GROUP_SINCE_LAST_TIME_LARGER_THAN, - OPEARTION_BY_GROUP_SINCE_LAST_TIME_LESS_THAN, - OPEARTION_BY_GROUP_SINCE_LAST_TIME_IN_RANGE, - + OPERATION_BATCH_SIZE_LARGER_THAN, + OPERATION_BATCH_SIZE_LESS_THAN, + OPERATION_BATCH_SIZE_IN_RANGE, + OPERATION_BATCH_SIZE_EQUALS, + PlaceHolder61, + PlaceHolder62, + PlaceHolder63, + PlaceHolder64, + PlaceHolder65, + PlaceHolder66, + PlaceHolder67, + PlaceHolder68, + PlaceHolder69, + PlaceHolder70, + PlaceHolder71, + PlaceHolder72, + PlaceHolder73, + PlaceHolder74, + PlaceHolder75, + PlaceHolder76, + PlaceHolder77, + PlaceHolder78, + PlaceHolder79, + PlaceHolder80, // ---------------------------------------------------------- // Oracle and remote call related expressions - ORACLE_CALL_RESULT_EQUALS, - ORACLE_CALL_RESULT_LARGER_THAN, - ORACLE_CALL_RESULT_LESS_THAN, - ORACLE_CALL_RESULT_IN_RANGE, - ORACLE_CALL_1_LESS_THAN_2, - ORACLE_CALL_1_LARGER_THAN_2, - ORACLE_CALL_1_EQUALS_2, - PlaceHolder141, - PlaceHolder142, - PlaceHolder143, - PlaceHolder144, - PlaceHolder145, - PlaceHolder146, - PlaceHolder147, - PlaceHolder148, - PlaceHolder149, - PlaceHolder150, + ORACLE_CALL_UINT256_RESULT_EQUALS, + ORACLE_CALL_UINT256_RESULT_LARGER_THAN, + ORACLE_CALL_UINT256_RESULT_LESS_THAN, + ORACLE_CALL_UINT256_RESULT_IN_RANGE, + ORACLE_CALL_UINT256_1_LESS_THAN_2, + ORACLE_CALL_UINT256_1_LARGER_THAN_2, + ORACLE_CALL_UINT256_1_EQUALS_2, + ORACLE_CALL_STRING_RESULT_EQUALS, + ORACLE_CALL_STRING_1_EQUALS_2, + PlaceHolder81, + PlaceHolder82, + PlaceHolder83, + PlaceHolder84, + PlaceHolder85, + PlaceHolder86, + PlaceHolder87, + PlaceHolder88, + PlaceHolder89, + PlaceHolder90, + PlaceHolder91, + PlaceHolder92, + PlaceHolder93, + PlaceHolder94, + PlaceHolder95, + PlaceHolder96, + PlaceHolder97, + PlaceHolder98, + PlaceHolder99, + PlaceHolder100, // ---------------------------------------------------------- @@ -184,33 +247,82 @@ enum EnumConditionExpression{ MINT_TOKENS_TOTAL_AMOUNT_LESS_THAN, MINT_TOKENS_TOTAL_AMOUNT_IN_RANGE, MINT_TOKENS_TOTAL_AMOUNT_EQUALS, - MINT_TOKENS_TARGET_ADDRESS_IN_LIST, + + MINT_TOKENS_ALL_TARGETS_ADDRESS_IN_LIST, + MINT_TOKENS_ALL_TARGETS_ADDRESS_TO_ITSELF, + MINT_TOKENS_ALL_TARGETS_ADDRESS_TO_ROLE_INDEX_IN_LIST, MINT_TOKENS_TOTAL_AMOUNT_LEVEL_X_MORE_THAN, MINT_TOKENS_TOTAL_AMOUNT_LEVEL_X_LESS_THAN, MINT_TOKENS_TOTAL_AMOUNT_LEVEL_X_IN_RANGE, MINT_TOKENS_TOTAL_AMOUNT_LEVEL_X_EQUALS, + MINT_TOKENS_TOTAL_VOTING_WEIGHT_LARGER_THAN, + MINT_TOKENS_TOTAL_VOTING_WEIGHT_LESS_THAN, + MINT_TOKENS_TOTAL_VOTING_WEIGHT_IN_RANGE, + MINT_TOKENS_TOTAL_DIVIDEND_WEIGHT_LARGER_THAN, + MINT_TOKENS_TOTAL_DIVIDEND_WEIGHT_LESS_THAN, + MINT_TOKENS_TOTAL_DIVIDEND_WEIGHT_IN_RANGE, + MINT_TOKEN_EACH_BATCH_AMOUNT_MORE_THAN, + MINT_TOKEN_EACH_BATCH_AMOUNT_LESS_THAN, + MINT_TOKEN_EACH_BATCH_AMOUNT_IN_RANGE, + MINT_TOKEN_EACH_BATCH_AMOUNT_EQUALS, + MINT_TOKEN_EACH_BATCH_AMOUNT_LEVEL_X_MORE_THAN, + MINT_TOKEN_EACH_BATCH_AMOUNT_LEVEL_X_LESS_THAN, + MINT_TOKEN_EACH_BATCH_AMOUNT_LEVEL_X_IN_RANGE, + MINT_TOKEN_EACH_BATCH_AMOUNT_LEVEL_X_EQUALS, + MINT_TOKEN_EACH_BATCH_TARGET_ADDRESS_IN_LIST, + MINT_TOKEN_EACH_BATCH_TARGET_ADDRESS_TO_ROLE_INDEX_IN_LIST, + + PlaceHolder101, + PlaceHolder102, + PlaceHolder103, + PlaceHolder104, + PlaceHolder105, + PlaceHolder106, + PlaceHolder107, + PlaceHolder108, + PlaceHolder109, + PlaceHolder110, + PlaceHolder111, + PlaceHolder112, + PlaceHolder113, + PlaceHolder114, + PlaceHolder115, + PlaceHolder116, + PlaceHolder117, + PlaceHolder118, + PlaceHolder119, + PlaceHolder120, - - - /** - * This condition expression will be ture if the current operation is - * minting new tokens in token class array to any addresses with - * the total voting weight larger than the amount X in the condition node. - * params: uint256 totalVotingWeight - */ - MINT_TOKEN_VOTING_WEIGHT_MORE_THAN, - - /** - * This condition expression will be ture if the current operation is - * minting new tokens in token class array to any addresses with - * the total dividend weight larger than the amount X in the condition node. - * params: uint256 totalDividendWeight - */ - MINT_TOKEN_DIVIDEND_WEIGHT_MORE_THAN, - - - //----------------------------------------------------------- - // burn token related expressions + // ---------------------------------------------------------- + // BURN token operation related expressions + BURN_TOKENS_TOTAL_AMOUNT_MORE_THAN, + BURN_TOKENS_TOTAL_AMOUNT_LESS_THAN, + BURN_TOKENS_TOTAL_AMOUNT_IN_RANGE, + BURN_TOKENS_TOTAL_AMOUNT_EQUALS, + + BURN_TOKENS_ALL_TARGETS_ADDRESS_IN_LIST, + BURN_TOKENS_ALL_TARGETS_ADDRESS_TO_ITSELF, + BURN_TOKENS_ALL_TARGETS_ADDRESS_TO_ROLE_INDEX_IN_LIST, + BURN_TOKENS_TOTAL_AMOUNT_LEVEL_X_MORE_THAN, + BURN_TOKENS_TOTAL_AMOUNT_LEVEL_X_LESS_THAN, + BURN_TOKENS_TOTAL_AMOUNT_LEVEL_X_IN_RANGE, + BURN_TOKENS_TOTAL_AMOUNT_LEVEL_X_EQUALS, + BURN_TOKENS_TOTAL_VOTING_WEIGHT_LARGER_THAN, + BURN_TOKENS_TOTAL_VOTING_WEIGHT_LESS_THAN, + BURN_TOKENS_TOTAL_VOTING_WEIGHT_IN_RANGE, + BURN_TOKENS_TOTAL_DIVIDEND_WEIGHT_LARGER_THAN, + BURN_TOKENS_TOTAL_DIVIDEND_WEIGHT_LESS_THAN, + BURN_TOKENS_TOTAL_DIVIDEND_WEIGHT_IN_RANGE, + BURN_TOKEN_EACH_BATCH_AMOUNT_MORE_THAN, + BURN_TOKEN_EACH_BATCH_AMOUNT_LESS_THAN, + BURN_TOKEN_EACH_BATCH_AMOUNT_IN_RANGE, + BURN_TOKEN_EACH_BATCH_AMOUNT_EQUALS, + BURN_TOKEN_EACH_BATCH_AMOUNT_LEVEL_X_MORE_THAN, + BURN_TOKEN_EACH_BATCH_AMOUNT_LEVEL_X_LESS_THAN, + BURN_TOKEN_EACH_BATCH_AMOUNT_LEVEL_X_IN_RANGE, + BURN_TOKEN_EACH_BATCH_AMOUNT_LEVEL_X_EQUALS, + BURN_TOKEN_EACH_BATCH_TARGET_ADDRESS_IN_LIST, + BURN_TOKEN_EACH_BATCH_TARGET_ADDRESS_TO_ROLE_INDEX_IN_LIST, // ---------------------------------------------------------- /** @@ -226,6 +338,13 @@ enum EnumConditionExpression{ */ TRANSFER_TOKEN_MORE_THAN, + /** + * This condition expression will be ture if: + * 1. the current operation is + * 2. transfering tokens to address is in address array + + + /** * This condition expression will be ture if: * 1. the current operation is diff --git a/darc-protocol/contracts/protocol/Plugin/Plugin.sol b/darc-protocol/contracts/protocol/Plugin/Plugin.sol index af93aa3..89d4249 100644 --- a/darc-protocol/contracts/protocol/Plugin/Plugin.sol +++ b/darc-protocol/contracts/protocol/Plugin/Plugin.sol @@ -1,8 +1,6 @@ // SPDX-License-Identifier: BUSL-1.1 pragma solidity ^0.8.19; -import './EnumConditionExpression.sol'; - /** * @notice condition node types */ @@ -128,7 +126,7 @@ struct ConditionNode { /** * the condition expression of the current condition node */ - EnumConditionExpression conditionExpression; + uint256 conditionExpression; /** * a list of the child nodes of the current condition node diff --git a/darc-protocol/test/MultiDARCTest/Multi_DARC_call_test.ts b/darc-protocol/test/MultiDARCTest/Multi_DARC_call_test.ts index a855f32..37ee7dd 100644 --- a/darc-protocol/test/MultiDARCTest/Multi_DARC_call_test.ts +++ b/darc-protocol/test/MultiDARCTest/Multi_DARC_call_test.ts @@ -78,7 +78,7 @@ describe("test for multi DARC call test", function () { node_allow_signer1_target1 ], votingRuleIndex: 0, - note: "0x70997970C51812dc3A010C7d01b50e0d17dc79C8 should operate", + notes: "0x70997970C51812dc3A010C7d01b50e0d17dc79C8 should operate", bIsEnabled: true, bIsInitialized: true, bIsBeforeOperation: true, @@ -91,7 +91,7 @@ describe("test for multi DARC call test", function () { }], } ) - + // next get the ABI of the darc2 contract entrance, and encode it //const abiDARC2 = darc2.interface.getFunction("entrance").format(); diff --git a/darc-protocol/test/pluginTest/operator_AND_test.ts b/darc-protocol/test/pluginTest/operator_AND_test.ts index 2e92ce9..c0eab91 100644 --- a/darc-protocol/test/pluginTest/operator_AND_test.ts +++ b/darc-protocol/test/pluginTest/operator_AND_test.ts @@ -14,7 +14,7 @@ const target2 = '0x90F79bf6EB2c4f870365E785982E1f101E93b906'; const target3 = '0x870526b7973b56163a6997bb7c886f5e4ea53638'; -describe.only("operator OR test", function () { +describe("operator AND test", function () { it ("should pass operator OR test", async function () { diff --git a/darc-protocol/test/pluginTest/operator_OR_test.ts b/darc-protocol/test/pluginTest/operator_OR_test.ts index 7b4db86..4d17974 100644 --- a/darc-protocol/test/pluginTest/operator_OR_test.ts +++ b/darc-protocol/test/pluginTest/operator_OR_test.ts @@ -14,7 +14,7 @@ const target2 = '0x90F79bf6EB2c4f870365E785982E1f101E93b906'; const target3 = '0x870526b7973b56163a6997bb7c886f5e4ea53638'; -describe.only("operator OR test", function () { +describe("operator OR test", function () { it ("should pass operator OR test", async function () { diff --git a/darc-specs/opcode.md b/darc-specs/opcode.md new file mode 100644 index 0000000..0c5a1f5 --- /dev/null +++ b/darc-specs/opcode.md @@ -0,0 +1,41 @@ +DARC Instruction Set Opcode Table + +| Opcode ID | Opcode Name | Opcode Parameter | Opcode Notes | +|-----------|----------------------------------------------|----------------------------------------------------------|------------------------------------------------------------| +| 0 | UNDEFINED | | Invalid Operation | +| 1 | BATCH_MINT_TOKENS | ADDRESS_2DARRAY[0] toAddressArray, UINT256_2DARRAY[0] tokenClassArray, UINT256_2DARRAY[1] amountArray | Batch Mint Token Operation | +| 2 | BATCH_CREATE_TOKEN_CLASSES | STRING_ARRAY[] nameArray, UINT256_2DARRAY[0] tokenIndexArray, UINT256_2DARRAY[1] votingWeightArray, UINT256_2DARRAY[2] dividendWeightArray | Batch Create Token Class Operation | +| 3 | BATCH_TRANSFER_TOKENS | ADDRESS_2DARRAY[0] toAddressArray, UINT256_2DARRAY[0] tokenClassArray, UINT256_2DARRAY[1] amountArray | Batch Transfer Token Operation | +| 4 | BATCH_TRANSFER_TOKENS_FROM_TO | ADDRESS_2DARRAY[0] fromAddressArray, ADDRESS_2DARRAY[1] toAddressArray, UINT256_2DARRAY[0] tokenClassArray, UINT256_2DARRAY[1] amountArray | Batch Transfer Token From Addr A to Addr B Operation | +| 5 | BATCH_BURN_TOKENS | UINT256_2DARRAY[0] tokenClassArray, UINT256_2DARRAY[1] amountArray | Batch Burn Token Operation | +| 6 | BATCH_BURN_TOKENS_FROM | ADDRESS_2DARRAY[0] fromAddressArray, UINT256_2DARRAY[0] tokenClassArray, UINT256_2DARRAY[1] amountArray | Batch Burn Token From Addr A Operation | +| 7 | BATCH_ADD_MEMBERSHIP | ADDRESS_2DARRAY[0] memberAddressArray, UINT256_2DARRAY[0] memberRoleArray, STRING_ARRAY memberNameArray | Batch Add Member Operation | +| 8 | BATCH_SUSPEND_MEMBERSHIP | ADDRESS_2DARRAY[0] memberAddressArray | Batch Suspend Member Operation | +| 9 | BATCH_RESUME_MEMBERSHIP | ADDRESS_2DARRAY[0] memberAddressArray | Batch Resume Member Operation | +| 10 | BATCH_CHANGE_MEMBER_ROLES | ADDRESS_2DARRAY[0] memberAddressArray, UINT256_2DARRAY[0] memberRoleArray | Batch Change Member Role Operation | +| 11 | BATCH_CHANGE_MEMBER_NAMES | ADDRESS_2DARRAY[0] memberAddressArray, STRING_ARRAY memberNameArray | Batch Change Member Name Operation | +| 12 | BATCH_ADD_PLUGINS | Plugin[] pluginList | Batch Add Emergency Agent Operation | +| 13 | BATCH_ENABLE_PLUGINS | UINT256_ARRAY[0] pluginIndexArray, BOOL_ARRAY isBeforeOperationArray | Batch Enable Plugin Operation | +| 14 | BATCH_DISABLE_PLUGINS | UINT256_ARRAY[0] pluginIndexArray, BOOL_ARRAY isBeforeOperationArray | Batch Disable Plugin Operation | +| 15 | BATCH_ADD_AND_ENABLE_PLUGINS | Plugin[] pluginList | Batch Add and Enable Plugin Operation | +| 16 | BATCH_SET_PARAMETERS | MachineParameter[] parameterNameArray, UINT256_2DARRAY[0] parameterValueArray | Batch Set Parameter Operation | +| 17 | BATCH_ADD_WITHDRAWABLE_BALANCES | ADDRESS_2DARRAY[0] addressArray, UINT256_2DARRAY[0] amountArray | Batch Add Withdrawable Balance Operation | +| 18 | BATCH_REDUCE_WITHDRAWABLE_BALANCES | ADDRESS_2DARRAY[0] addressArray, UINT256_2DARRAY[0] amountArray | Batch Reduce Withdrawable Balance Operation | +| 19 | BATCH_ADD_VOTING_RULES | VotingRule[] votingRuleList | Batch Add Voting Rules Operation | +| 20 | BATCH_PAY_TO_MINT_TOKENS | ADDRESS_2DARRAY[0] addressArray, UINT256_2DARRAY[0] tokenClassArray, UINT256_2DARRAY[1] amountArray, UINT256_2DARRAY[2] priceArray, UINT256_2DARRAY[3] dividendableFlag | Batch Pay to Mint Tokens Operation | +| 21 | BATCH_PAY_TO_TRANSFER_TOKENS | ADDRESS_2DARRAY[0] toAddressArray, UINT256_2DARRAY[0] tokenClassArray, UINT256_2DARRAY[1] amountArray, UINT256_2DARRAY[2] priceArray, UINT256_2DARRAY[3] dividendableFlag | Pay some cash to transfer tokens Operation (product coins) | +| 22 | ADD_EMERGENCY | ADDRESS_2DARRAY[0] addressArray | Add an array of address as emergency agents Operation | +| 23 | RESERVED_ID_23 | | Reserved ID 23 DO NOT USE | +| 24 | CALL_EMERGENCY | UINT256_2DARRAY[0] addressArray | Call emergency agents to handle emergency situations | +| 25 | CALL_CONTRACT_ABI | ADDRESS_2D[0][0] contractAddress, bytes abi, UINT256_2DARRAY[0][0] value | Call a contract with the given abi Operation | +| 26 | PAY_CASH | uint256 amount, uint256 paymentType, uint256 dividendable | Pay some cash Operation | +| 27 | OFFER_DIVIDENDS | | Calculate the dividends and offer to token holders Operation| +| 28 | RESERVED_ID_28 | | Reserved ID 28 DO NOT USE | +| 29 | SET_APPROVAL_FOR_ALL_OPERATIONS | ADDRESS_2DARRAY[0][0] targetAddress | Set the approval for all transfer operations by address Operation | +| 30 | BATCH_BURN_TOKENS_AND_REFUND | UINT256_2D[0] tokenClassArray, UINT256_2D[1] amountArray, UINT256_2D[2] priceArray | Batch Burn tokens and Refund Operation | +| 31 | ADD_STORAGE_IPFS_HASH | STRING_ARRAY[0][0] IFPSHash | Add storage IPFS hash to the storage list permanently Operation | +| 32 | VOTE | bool[] voteArray | Vote for a voting pending program Operation | +| 33 | EXECUTE_PROGRAM | | Execute a program that has been voted and approved Operation | +| 34 | END_EMERGENCY | | Emergency mode termination Operation | +| 35 | UPGRADE_TO_ADDRESS | ADDRESS_2DARRAY[0][0] targetAddress | Upgrade the contract to a new contract address Operation | +| 36 | CONFIRM_UPGRAED_FROM_ADDRESS | ADDRESS_2DARRAY[0][0] fromAddress | Accepting current DARCs to be upgraded from the old contract address Operation | diff --git a/darc-specs/plugin.md b/darc-specs/plugin.md new file mode 100644 index 0000000..578c7de --- /dev/null +++ b/darc-specs/plugin.md @@ -0,0 +1,338 @@ +| ID | Plugin Name | Plugin Parameter| Plugin Notes| +|------------|------|------|-------| +| 0 | UNDEFINED | | Invalid Operation | +| 1 | OPERATOR_NAME_EQUALS| STRING_ARRAY[0] operatorName | The operator name is exactly the same as the given string | +| 2 | OPERATOR_ROLE_INDEX_EQUALS| UINT256_2DARRAY[0][0] operatorRoleIndex | The operator role index is exactly the same as operatorRoleIndex | +| 3 | OPERATOR_ADDRESS_EQUALS | address operatorAddress | The operator address equals operatorAddress| +| 4 | OPERATOR_ROLE_GREATER_THAN | UINT256_2DARRAY[0][0] operatorRoleIndex | The operator role index is greater than operatorRoleIndex| +| 5 | OPERATOR_ROLE_LESS_THAN | UINT256_2DARRAY[0][0] operatorRoleIndex | The operator role index is less than operatorRoleIndex| +| 6 | OPERATOR_ROLE_IN_RANGE| UINT256_2DARRAY[0][0] operatorRoleIndex || +| 7 | OPERATOR_ROLE_IN_LIST | UINT256_2DARRAY[0][0]_2DARRAY[0] operatorRoleIndexArray|| +| 8 | OPERATOR_TOKEN_X_AMOUNT_GREATER_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][0] amount || +| 9 | OPERATOR_TOKEN_X_AMOUNT_LESS_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][0] amount || +| 10 | OPERATOR_TOKEN_X_AMOUNT_IN_RANGE | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][0] amount || +| 11 | OPERATOR_TOKEN_X_AMOUNT_EQUALS| UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][0] amount || +| 12 | OPERATOR_TOKEN_X_PERCENTAGE_GREATER_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][0] percentage || +| 13 | OPERATOR_TOKEN_X_PERCENTAGE_LESS_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][0] percentage || +| 14 | OPERATOR_TOKEN_X_PERCENTAGE_IN_RANGE | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][0] percentage || +| 15 | OPERATOR_TOKEN_X_PERCENTAGE_EQUALS| UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][0] percentage || +| 16 | OPERATOR_VOTING_WEIGHT_GREATER_THAN| UINT256_2DARRAY[0][0] amount || +| 17 | OPERATOR_VOTING_WEIGHT_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 18 | OPERATOR_VOTING_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] amount || +| 19 | OPERATOR_DIVIDEND_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 20 | OPERATOR_DIVIDEND_WEIGHT_LESS_THAN| UINT256_2DARRAY[0][0] amount || +| 21 | OPERATOR_DIVIDEND_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] amount || +| 22 | OPERATOR_DIVIDEND_WITHDRAWABLE_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 23 | OPERATOR_DIVIDEND_WITHDRAWABLE_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 24 | OPERATOR_DIVIDEND_WITHDRAWABLE_IN_RANGE| UINT256_2DARRAY[0][0] amount || +| 25 | OPERATOR_WITHDRAWABLE_CASH_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 26 | OPERATOR_WITHDRAWABLE_CASH_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 27 | OPERATOR_WITHDRAWABLE_CASH_IN_RANGE| UINT256_2DARRAY[0][0] amount || +| 28 | OPERATOR_WITHDRAWABLE_DIVIDENDS_GREATER_THAN| UINT256_2DARRAY[0][0] amount || +| 29 | OPERATOR_WITHDRAWABLE_DIVIDENDS_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 30 | OPERATOR_WITHDRAWABLE_DIVIDENDS_IN_RANGE | UINT256_2DARRAY[0][0] amount || +| 31 | OPERATOR_ADDRESS_IN_LIST | address[] the list of addresses || +| 32 | Placeholder32 | | | +| 33 | Placeholder33 | | | +| 34 | Placeholder34 | | | +| 35 | Placeholder35 | | | +| 36 | Placeholder36 | | | +| 37 | Placeholder37 | | | +| 38 | Placeholder38 | | | +| 39 | Placeholder39 | | | +| 40 | Placeholder40 | | | +| 41 | Placeholder41 | | | +| 42 | Placeholder42 | | | +| 43 | Placeholder43 | | | +| 44 | Placeholder44 | | | +| 45 | Placeholder45 | | | +| 46 | Placeholder46 | | | +| 47 | Placeholder47 | | | +| 48 | Placeholder48 | | | +| 49 | Placeholder49 | | | +| 50 | Placeholder50 | | | +| 51 | TIMESTAMP_GREATER_THAN | uint256 timestamp || +| 52 | TIMESTAMP_LESS_THAN | uint256 timestamp || +| 53 | TIMESTAMP_IN_RANGE | uint256 timestamp, uint256 timestamp || +| 54 | DATE_YEAR_GREATER_THAN | uint256 year || +| 55 | DATE_YEAR_LESS_THAN | uint256 year || +| 56 | DATE_YEAR_IN_RANGE | uint256 year, uint256 year || +| 57 | DATE_MONTH_GREATER_THAN | uint256 month || +| 58 | DATE_MONTH_LESS_THAN | uint256 month || +| 59 | DATE_MONTH_IN_RANGE | uint256 month, uint256 month || +| 60 | DATE_DAY_GREATER_THAN | uint256 day || +| 61 | DATE_DAY_LESS_THAN | uint256 day || +| 62 | DATE_DAY_IN_RANGE | uint256 day, uint256 day || +| 63 | DATE_HOUR_GREATER_THAN | uint256 hour || +| 64 | DATE_HOUR_LESS_THAN | uint256 hour || +| 65 | DATE_HOUR_IN_RANGE | uint256 hour, uint256 hour || +| 66 | ADDRESS_VOTING_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 67 | ADDRESS_VOTING_WEIGHT_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 68 | ADDRESS_VOTING_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] amount || +| 69 | ADDRESS_DIVIDEND_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 70 | ADDRESS_DIVIDEND_WEIGHT_LESS_THAN| UINT256_2DARRAY[0][0] amount || +| 71 | ADDRESS_DIVIDEND_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] amount || +| 72 | ADDRESS_TOKEN_X_GREATER_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][0] amount || +| 73 | ADDRESS_TOKEN_X_LESS_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][0] amount || +| 74 | ADDRESS_TOKEN_X_IN_RANGE | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][0] amount || +| 75 | TOTAL_VOTING_WEIGHT_GREATER_THAN| UINT256_2DARRAY[0][0] amount || +| 76 | TOTAL_VOTING_WEIGHT_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 77 | TOTAL_VOTING_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] amount || +| 78 | TOTAL_DIVIDEND_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 79 | TOTAL_DIVIDEND_WEIGHT_LESS_THAN| UINT256_2DARRAY[0][0] amount || +| 80 | TOTAL_DIVIDEND_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] amount || +| 81 | TOTAL_CASH_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 82 | TOTAL_CASH_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 83 | TOTAL_CASH_IN_RANGE| UINT256_2DARRAY[0][0] amount || +| 84 | TOTAL_CASH_EQUALS| UINT256_2DARRAY[0][0] amount || +| 85 | TOKEN_IN_LIST_VOTING_WEIGHT_GREATER_THAN| UINT256_2DARRAY[0][0] amount || +| 86 | TOKEN_IN_LIST_VOTING_WEIGHT_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 87 | TOKEN_IN_LIST_VOTING_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] amount || +| 88 | TOKEN_IN_LIST_DIVIDEND_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 89 | TOKEN_IN_LIST_DIVIDEND_WEIGHT_LESS_THAN| UINT256_2DARRAY[0][0] amount || +| 90 | TOKEN_IN_LIST_DIVIDEND_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] amount || +| 91 | TOKEN_IN_LIST_AMOUNT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 92 | TOKEN_IN_LIST_AMOUNT_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 93 | TOKEN_IN_LIST_AMOUNT_IN_RANGE | UINT256_2DARRAY[0][0] amount || +| 94 | TOKEN_IN_LIST_AMOUNT_EQUALS| UINT256_2DARRAY[0][0] amount || +| 95 | Placeholder95 | | | +| 96 | Placeholder96 | | | +| 97 | Placeholder97 | | | +| 98 | Placeholder98 | | | +| 99 | Placeholder99 | | | +| 100 | Placeholder100 | | | +| 101 | Placeholder101 | | | +| 102 | Placeholder102 | | | +| 103 | Placeholder103 | | | +| 104 | Placeholder104 | | | +| 105 | Placeholder105 | | | +| 106 | Placeholder106 | | | +| 107 | Placeholder107 | | | +| 108 | Placeholder108 | | | +| 109 | Placeholder109 | | | +| 110 | Placeholder110 | | | +| 111 | Placeholder111 | | | +| 112 | Placeholder112 | | | +| 113 | Placeholder113 | | | +| 114 | Placeholder114 | | | +| 115 | Placeholder115 | | | +| 116 | Placeholder116 | | | +| 117 | Placeholder117 | | | +| 118 | Placeholder118 | | | +| 119 | Placeholder119 | | | +| 120 | Placeholder120 | | | +| 121 | Placeholder121 | | | +| 122 | Placeholder122 | | | +| 123 | Placeholder123 | | | +| 124 | Placeholder124 | | | +| 125 | Placeholder125 | | | +| 126 | Placeholder126 | | | +| 127 | Placeholder127 | | | +| 128 | Placeholder128 | | | +| 129 | Placeholder129 | | | +| 130 | Placeholder130 | | | +| 131 | Placeholder131 | | | +| 132 | Placeholder132 | | | +| 133 | Placeholder133 | | | +| 134 | Placeholder134 | | | +| 135 | Placeholder135 | | | +| 136 | Placeholder136 | | | +| 137 | Placeholder137 | | | +| 138 | Placeholder138 | | | +| 139 | Placeholder139 | | | +| 140 | Placeholder140 | | | +| 141 | Placeholder141 | | | +| 142 | Placeholder142 | | | +| 143 | Placeholder143 | | | +| 144 | Placeholder144 | | | +| 145 | Placeholder145 | | | +| 146 | Placeholder146 | | | +| 147 | Placeholder147 | | | +| 148 | Placeholder148 | | | +| 149 | Placeholder149 | | | +| 150 | Placeholder150 | | | +| 53 | TIMESTAMP_IN_RANGE | uint256 timestamp, uint256 timestamp || +| 54 | DATE_YEAR_GREATER_THAN | uint256 year || +| 55 | DATE_YEAR_LESS_THAN | uint256 year || +| 56 | DATE_YEAR_IN_RANGE | uint256 year, uint256 year || +| 57 | DATE_MONTH_GREATER_THAN | uint256 month || +| 58 | DATE_MONTH_LESS_THAN | uint256 month || +| 59 | DATE_MONTH_IN_RANGE | uint256 month, uint256 month || +| 60 | DATE_DAY_GREATER_THAN | uint256 day || +| 61 | DATE_DAY_LESS_THAN | uint256 day || +| 62 | DATE_DAY_IN_RANGE | uint256 day, uint256 day || +| 63 | DATE_HOUR_GREATER_THAN | uint256 hour || +| 64 | DATE_HOUR_LESS_THAN | uint256 hour || +| 65 | DATE_HOUR_IN_RANGE | uint256 hour, uint256 hour || +| 66 | ADDRESS_VOTING_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 67 | ADDRESS_VOTING_WEIGHT_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 68 | ADDRESS_VOTING_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] amount || +| 69 | ADDRESS_DIVIDEND_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 70 | ADDRESS_DIVIDEND_WEIGHT_LESS_THAN| UINT256_2DARRAY[0][0] amount || +| 71 | ADDRESS_DIVIDEND_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] amount || +| 72 | ADDRESS_TOKEN_X_GREATER_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][0] amount || +| 73 | ADDRESS_TOKEN_X_LESS_THAN | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][0] amount || +| 74 | ADDRESS_TOKEN_X_IN_RANGE | UINT256_2DARRAY[0][0] tokenClass, UINT256_2DARRAY[0][0] amount || +| 75 | TOTAL_VOTING_WEIGHT_GREATER_THAN| UINT256_2DARRAY[0][0] amount || +| 76 | TOTAL_VOTING_WEIGHT_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 77 | TOTAL_VOTING_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] amount || +| 78 | TOTAL_DIVIDEND_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 79 | TOTAL_DIVIDEND_WEIGHT_LESS_THAN| UINT256_2DARRAY[0][0] amount || +| 80 | TOTAL_DIVIDEND_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] amount || +| 81 | TOTAL_CASH_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 82 | TOTAL_CASH_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 83 | TOTAL_CASH_IN_RANGE| UINT256_2DARRAY[0][0] amount || +| 84 | TOTAL_CASH_EQUALS| UINT256_2DARRAY[0][0] amount || +| 85 | TOKEN_IN_LIST_VOTING_WEIGHT_GREATER_THAN| UINT256_2DARRAY[0][0] amount || +| 86 | TOKEN_IN_LIST_VOTING_WEIGHT_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 87 | TOKEN_IN_LIST_VOTING_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] amount || +| 88 | TOKEN_IN_LIST_DIVIDEND_WEIGHT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 89 | TOKEN_IN_LIST_DIVIDEND_WEIGHT_LESS_THAN| UINT256_2DARRAY[0][0] amount || +| 90 | TOKEN_IN_LIST_DIVIDEND_WEIGHT_IN_RANGE | UINT256_2DARRAY[0][0] amount || +| 91 | TOKEN_IN_LIST_AMOUNT_GREATER_THAN | UINT256_2DARRAY[0][0] amount || +| 92 | TOKEN_IN_LIST_AMOUNT_LESS_THAN | UINT256_2DARRAY[0][0] amount || +| 93 | TOKEN_IN_LIST_AMOUNT_IN_RANGE | UINT256_2DARRAY[0][0] amount || +| 94 | TOKEN_IN_LIST_AMOUNT_EQUALS| UINT256_2DARRAY[0][0] amount || +| 95 | Placeholder95 | | | +| 96 | Placeholder96 | | | +| 97 | Placeholder97 | | | +| 98 | Placeholder98 | | | +| 99 | Placeholder99 | | | +| 100 | Placeholder100 | | | +| 101 | Placeholder101 | | | +| 102 | Placeholder102 | | | +| 103 | Placeholder103 | | | +| 104 | Placeholder104 | | | +| 105 | Placeholder105 | | | +| 106 | Placeholder106 | | | +| 107 | Placeholder107 | | | +| 108 | Placeholder108 | | | +| 109 | Placeholder109 | | | +| 110 | Placeholder110 | | | +| 111 | Placeholder111 | | | +| 112 | Placeholder112 | | | +| 113 | Placeholder113 | | | +| 114 | Placeholder114 | | | +| 115 | Placeholder115 | | | +| 116 | Placeholder116 | | | +| 117 | Placeholder117 | | | +| 118 | Placeholder118 | | | +| 119 | Placeholder119 | | | +| 120 | Placeholder120 | | | +| 121 | Placeholder121 | | | +| 122 | Placeholder122 | | | +| 123 | Placeholder123 | | | +| 124 | Placeholder124 | | | +| 125 | Placeholder125 | | | +| 126 | Placeholder126 | | | +| 127 | Placeholder127 | | | +| 128 | Placeholder128 | | | +| 129 | Placeholder129 | | | +| 130 | Placeholder130 | | | +| 131 | Placeholder131 | | | +| 132 | Placeholder132 | | | +| 133 | Placeholder133 | | | +| 134 | Placeholder134 | | | +| 135 | Placeholder135 | | | +| 136 | Placeholder136 | | | +| 137 | Placeholder137 | | | +| 138 | Placeholder138 | | | +| 139 | Placeholder139 | | | +| 140 | Placeholder140 | | | +| 141 | Placeholder141 | | | +| 142 | Placeholder142 | | | +| 143 | Placeholder143 | | | +| 144 | Placeholder144 | | | +| 145 | Placeholder145 | | | +| 146 | Placeholder146 | | | +| 147 | Placeholder147 | | | +| 148 | Placeholder148 | | | +| 149 | Placeholder149 | | | +| 150 | Placeholder150 | | | +| 151 | OPERATION_EQUALS | string operation, uint256 value || +| 152 | OPERATION_IN_LIST | string operation, uint256[] values || +| 153 | OPERATION_BY_OPERATOR_SINCE_LAST_TIME_LARGER_THAN | string operation, address operator, uint256 timestamp || +| 154 | OPERATION_BY_OPERATOR_SINCE_LAST_TIME_LESS_THAN | string operation, address operator, uint256 timestamp || +| 155 | OPERATION_BY_OPERATOR_SINCE_LAST_TIME_IN_RANGE | string operation, address operator, uint256 startTimestamp, uint256 endTimestamp || +| 156 | OPERATION_EVERYONE_SINCE_LAST_TIME_LARGER_THAN | string operation, uint256 timestamp || +| 157 | OPERATION_EVERYONE_SINCE_LAST_TIME_LESS_THAN | string operation, uint256 timestamp || +| 158 | OPERATION_EVERYONE_SINCE_LAST_TIME_IN_RANGE | string operation, uint256 startTimestamp, uint256 endTimestamp || +| 159 | OPERATION_BATCH_SIZE_LARGER_THAN | uint256 batchSize || +| 160 | OPERATION_BATCH_SIZE_LESS_THAN | uint256 batchSize || +| 161 | OPERATION_BATCH_SIZE_IN_RANGE | uint256 startBatchSize, uint256 endBatchSize || +| 162 | OPERATION_BATCH_SIZE_EQUALS | uint256 batchSize || +| 163 | Placeholder163 | | | +| 164 | Placeholder164 | | | +| 165 | Placeholder165 | | | +| 166 | Placeholder166 | | | +| 167 | Placeholder167 | | | +| 168 | Placeholder168 | | | +| 169 | Placeholder169 | | | +| 170 | Placeholder170 | | | +| 171 | Placeholder171 | | | +| 172 | Placeholder172 | | | +| 173 | Placeholder173 | | | +| 174 | Placeholder174 | | | +| 175 | Placeholder175 | | | +| 176 | Placeholder176 | | | +| 177 | Placeholder177 | | | +| 178 | Placeholder178 | | | +| 179 | Placeholder179 | | | +| 180 | Placeholder180 | | | +| 181 | ORACLE_CALL_UINT256_RESULT_EQUALS | string oracle, string method, uint256[] args, uint256 expectedValue || +| 182 | ORACLE_CALL_UINT256_RESULT_LARGER_THAN | string oracle, string method, uint256[] args, uint256 minValue || +| 183 | ORACLE_CALL_UINT256_RESULT_LESS_THAN | string oracle, string method, uint256[] args, uint256 maxValue || +| 184 | ORACLE_CALL_UINT256_RESULT_IN_RANGE | string oracle, string method, uint256[] args, uint256 minValue, uint256 maxValue || +| 185 | ORACLE_CALL_UINT256_1_LESS_THAN_2 | string oracle, string method, uint256[] args || +| 186 | ORACLE_CALL_UINT256_1_LARGER_THAN_2 | string oracle, string method, uint256[] args || +| 187 | ORACLE_CALL_UINT256_1_EQUALS_2 | string oracle, string method, uint256[] args || +| 188 | ORACLE_CALL_STRING_RESULT_EQUALS | string oracle, string method, string[] args, string expectedValue || +| 189 | ORACLE_CALL_STRING_1_EQUALS_2 | string oracle, string method, string[] args || +| 190 | ORACLE_CALL_STRING_RESULT_IN_LIST | string oracle, string method, string[] args, string[] expectedValues || +| 191 | Placeholder191 | | | +| 192 | Placeholder192 | | | +| 193 | Placeholder193 | | | +| 194 | Placeholder194 | | | +| 195 | Placeholder195 | | | +| 196 | Placeholder196 | | | +| 197 | Placeholder197 | | | +| 198 | Placeholder198 | | | +| 199 | Placeholder199 | | | +| 200 | Placeholder200 | | | +| 201 | Placeholder201 | | | +| 202 | Placeholder202 | | | +| 203 | Placeholder203 | | | +| 204 | Placeholder204 | | | +| 205 | Placeholder205 | | | +| 206 | Placeholder206 | | | +| 207 | Placeholder207 | | | +| 208 | Placeholder208 | | | +| 209 | Placeholder209 | | | +| 210 | Placeholder210 | | | +| 211 | MINT_TOKENS_TOTAL_AMOUNT_MORE_THAN | uint256 amount || +| 212 | MINT_TOKENS_TOTAL_AMOUNT_LESS_THAN | uint256 amount || +| 213 | MINT_TOKENS_TOTAL_AMOUNT_IN_RANGE | uint256 minAmount, uint256 maxAmount || +| 214 | MINT_TOKENS_TOTAL_AMOUNT_EQUALS | uint256 amount || +| 215 | MINT_TOKENS_ALL_TARGETS_ADDRESS_IN_LIST | address[] addresses || +| 216 | MINT_TOKENS_ALL_TARGETS_ADDRESS_TO_ITSELF | || +| 217 | MINT_TOKENS_ALL_TARGETS_ADDRESS_TO_ROLE_INDEX_IN_LIST | uint256[] roleIndexes || +| 218 | MINT_TOKENS_TOTAL_AMOUNT_LEVEL_X_MORE_THAN | uint256 level, uint256 amount || +| 219 | MINT_TOKENS_TOTAL_AMOUNT_LEVEL_X_LESS_THAN | uint256 level, uint256 amount || +| 220 | MINT_TOKENS_TOTAL_AMOUNT_LEVEL_X_IN_RANGE | uint256 level, uint256 minAmount, uint256 maxAmount || +| 221 | MINT_TOKENS_TOTAL_AMOUNT_LEVEL_X_EQUALS | uint256 level, uint256 amount || +| 222 | MINT_TOKENS_TOTAL_VOTING_WEIGHT_LARGER_THAN | uint256 weight || +| 223 | MINT_TOKENS_TOTAL_VOTING_WEIGHT_LESS_THAN | uint256 weight || +| 224 | MINT_TOKENS_TOTAL_VOTING_WEIGHT_IN_RANGE | uint256 minWeight, uint256 maxWeight || +| 225 | MINT_TOKENS_TOTAL_DIVIDEND_WEIGHT_LARGER_THAN | uint256 weight || +| 226 | MINT_TOKENS_TOTAL_DIVIDEND_WEIGHT_LESS_THAN | uint256 weight || +| 227 | MINT_TOKENS_TOTAL_DIVIDEND_WEIGHT_IN_RANGE | uint256 minWeight, uint256 maxWeight || +| 228 | MINT_TOKEN_EACH_BATCH_AMOUNT_MORE_THAN | uint256 amount || +| 229 | MINT_TOKEN_EACH_BATCH_AMOUNT_LESS_THAN | uint256 amount || +| 230 | MINT_TOKEN_EACH_BATCH_AMOUNT_IN_RANGE | uint256 minAmount, uint256 maxAmount || +| 231 | MINT_TOKEN_EACH_BATCH_AMOUNT_EQUALS | uint256 amount || +| 232 | MINT_TOKEN_EACH_BATCH_AMOUNT_LEVEL_X_MORE_THAN | uint256 level, uint256 amount || +| 233 | MINT_TOKEN_EACH_BATCH_AMOUNT_LEVEL_X_LESS_THAN | uint256 level, uint256 amount || +| 234 | MINT_TOKEN_EACH_BATCH_AMOUNT_LEVEL_X_IN_RANGE | uint256 level, uint256 minAmount, uint256 maxAmount || +| 235 | MINT_TOKEN_EACH_BATCH_AMOUNT_LEVEL_X_EQUALS | uint256 level, uint256 amount || +| 236 | MINT_TOKEN_EACH_BATCH_TARGET_ADDRESS_IN_LIST | address[] addresses || +| 237 | MINT_TOKEN_EACH_BATCH_TARGET_ADDRESS_TO_ROLE_INDEX_IN_LIST | uint256[] roleIndexes ||