diff --git a/.github/workflows/foundry-test.yml b/.github/workflows/foundry-test.yml new file mode 100644 index 0000000..2d04bd1 --- /dev/null +++ b/.github/workflows/foundry-test.yml @@ -0,0 +1,24 @@ +name: Run Foundry Tests + +on: + push: + branches: + [feat/operator-restrictions] # This wildcard ensures that all branches are in scope + +jobs: + check: + name: Foundry project + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + submodules: recursive + + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 + + - name: Run tests + run: forge test -vvv + + - name: Run snapshot + run: forge snapshot diff --git a/.github/workflows/slither-analysis.yml b/.github/workflows/slither-analysis.yml new file mode 100644 index 0000000..1887af5 --- /dev/null +++ b/.github/workflows/slither-analysis.yml @@ -0,0 +1,40 @@ +name: Slither Analysis + +on: [push, pull_request] + +jobs: + analyze: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Run Slither + uses: crytic/slither-action@v0.3.0 + id: slither + with: + node-version: 16 + fail-on: none + slither-args: --checklist --filter-paths "openzeppelin-contracts" --show-ignored-findings --markdown-root ${{ github.server_url }}/${{ github.repository }}/blob/${{ github.sha }}/ + + - name: Save Slither output to file + run: echo "${{ steps.slither.outputs.stdout }}" >> slither-output.txt + + - name: Configure Git + run: | + git config user.name "GitHub Actions Bot" + git config user.email "actions@github.com" + + - name: Commit and push changes + run: | + git add slither-output.txt + git commit -m "Update Slither analysis output" + git push + + # Upload Slither Report as an Artifact + - name: Upload Slither Report + if: always() # Ensure the artifact is uploaded even if previous steps fail + uses: actions/upload-artifact@v3 + with: + name: slither-report + path: slither-output.txt diff --git a/.github/workflows/slither.yml b/.github/workflows/slither.yml new file mode 100644 index 0000000..1d2a8c2 --- /dev/null +++ b/.github/workflows/slither.yml @@ -0,0 +1,41 @@ +name: Slither Analysis + +on: [push, pull_request] + +jobs: + analyze: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Run Slither + uses: crytic/slither-action@v0.3.0 + id: slither + with: + target: 'src' + node-version: 16 + fail-on: none + slither-args: --checklist --show-ignored-findings --markdown-root ${{ github.server_url }}/${{ github.repository }}/blob/${{ github.sha }}/ + + - name: Save Slither output to file + run: echo "${{ steps.slither.outputs.stdout }}" > slither-output.txt + + - name: Configure Git + run: | + git config user.name "GitHub Actions Bot" + git config user.email "actions@github.com" + + - name: Commit and push changes + run: | + git add slither-output.txt + git commit -m "Update Slither analysis output" + git push + + # Upload Slither Report as an Artifact + - name: Upload Slither Report + if: always() # Ensure the artifact is uploaded even if previous steps fail + uses: actions/upload-artifact@v3 + with: + name: slither-report + path: slither-output.txt diff --git a/.github/workflows/solhint.yml b/.github/workflows/solhint.yml new file mode 100644 index 0000000..25faaca --- /dev/null +++ b/.github/workflows/solhint.yml @@ -0,0 +1,28 @@ +name: Solhint Linter + +on: + push: + branches: + [feat/operator-restrictions] # This wildcard ensures that all branches are in scope + +jobs: + lint: + name: Lint Solidity Files + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: '14' # You can specify your desired Node.js version here + + - name: Install Solhint + run: npm install -g solhint + + - name: Run Solhint + run: | + solhint --init + solhint 'src/*.sol' diff --git a/.solhint.json b/.solhint.json new file mode 100644 index 0000000..d1c533f --- /dev/null +++ b/.solhint.json @@ -0,0 +1,40 @@ +{ + "extends": "solhint:default", + "plugins": [], + "rules": { + "avoid-throw": "warn", + "avoid-suicide": "error", + "avoid-sha3": "warn", + "avoid-tx-origin:": "warn", + "not-rely-on-time": "warn", + "not-rely-on-block-hash": "warn", + "code-complexity": ["warn",7], + "explicit-types": ["warn","explicit"], + "max-states-count": ["warn",15], + "no-console": "error", + "no-empty-blocks": "warn", + "no-global-import": "warn", + "no-unused-import": "warn", + "no-unused-vars": "warn", + "one-contract-per-file": "warn", + "payable-fallback": "warn", + "reason-string": ["warn",{"maxLength":32}], + "quotes": ["error","double"], + "const-name-snakecase": "warn", + "contract-name-camelcase": "warn", + "event-name-camelcase": "warn", + "func-name-mixedcase": "warn", + "use-forbidden-name": "warn", + "func-order": "warn", + "visibility-modifier-order": "warn", + "avoid-call-value": "warn", + "avoid-low-level-calls": "warn", + "check-send-result": "warn", + "compiler-version": ["error","^0.8.0"], + "multiple-sends": "warn", + "no-complex-fallback": "warn", + "no-inline-assembly": "warn", + "reentrancy": "warn", + "state-visibility": "warn" + } +} diff --git a/README.md b/README.md index 9fe85d4..3c86158 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,17 @@ To run code in this repository, follow these steps: ```bash forge build -5. **Run tests:** +5. **Run unit tests:** ```bash - forge test + # tests will be ran on ethereum mainnet + forge test -vvv --match-path test/AdvancedOrderEngine.t.sol + ``` + +6. **Run deploy and setup script** + ```bash + source .env + forge script script/deployOrderEngine.s.sol --rpc-url $PEGASUS_RPC_URL --legacy --broadcast + + # deploy and verify + forge script script/deployOrderEngine.s.sol --rpc-url $PEGASUS_RPC_URL --broadcast -vvv --legacy --verify --verifier blockscout --verifier-url https://pegasus.lightlink.io/api/? --watch + ``` \ No newline at end of file diff --git a/broadcast/deployFacilitatorSwapContract.s.sol/1890/run-1712310260.json b/broadcast/deployFacilitatorSwapContract.s.sol/1890/run-1712310260.json new file mode 100644 index 0000000..273ccbc --- /dev/null +++ b/broadcast/deployFacilitatorSwapContract.s.sol/1890/run-1712310260.json @@ -0,0 +1,52 @@ +{ + "transactions": [ + { + "hash": "0xf22157bc265e79fb7b7fc419044fb340e5f547f4d1a94ab6d60d751a48687be5", + "transactionType": "CREATE", + "contractName": "OrderEngine", + "contractAddress": "0x490Fb03F26B1c384D24f95e5771299770fef565f", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xf29f5fc83c9310c887efce9d68cae1f046b6511b", + "gas": "0xd7c66", + "data": "0x6080806040523461001a57610b5b9081610020823930815050f35b600080fdfe608060405260048036101561001357600080fd5b60003560e01c90816321cd19a91461069f5781634416e986146104d857816395de97cc146104b7578163b4c07547146100d557508063b91611f41461007c5763c3c1f2ec1461006157600080fd5b602061007461006f3661077e565b610985565b604051908152f35b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d05760206040517fb91209a767a8178c503c992a2db0dd232393048d748c43a04d40fcccacc0df008152f35b600080fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d05780359067ffffffffffffffff82116100d057366023830112156100d05781602461012e93369301359101610895565b60606101c060405161013f8161082d565b60008152600060208201526000604082015260008382015260006080820152600060a0820152600060c0820152600060e0820152600061010082015260006101208201526000610140820152600061016082015282610180820152826101a082015201526101e0818051810103126100d05760208101516040820151916060810151608082015160a08301516101d760c08501610b04565b6101e360e08601610b04565b6101f06101008701610b04565b6101fd6101208801610b04565b9161020b6101408901610b04565b936101608901519586151587036100d0576101808a0151976101a08b0151996101c08c01519b6101e001519c6040519b60208d015260208c5261024d8c610879565b6040519c60208e015260208d526102638d610879565b6040519d60208f01528d6020815261027a90610879565b6040519e8f916102898361082d565b825260208201526040015260608d015260808c015273ffffffffffffffffffffffffffffffffffffffff1660a08b015273ffffffffffffffffffffffffffffffffffffffff1660c08a015273ffffffffffffffffffffffffffffffffffffffff1660e089015273ffffffffffffffffffffffffffffffffffffffff1661010088015273ffffffffffffffffffffffffffffffffffffffff1661012087015215156101408601526101608501526101808401526101a08301526101c082015260405180916020825280516020830152602081015160408301526040810151606083015260608101516080830152608081015160a083015260a081015173ffffffffffffffffffffffffffffffffffffffff1660c083015260c081015173ffffffffffffffffffffffffffffffffffffffff1660e083015260e081015173ffffffffffffffffffffffffffffffffffffffff1661010083015261010081015173ffffffffffffffffffffffffffffffffffffffff1661012083015261012081015173ffffffffffffffffffffffffffffffffffffffff1661014083015261014081015115156101608301526101608101516101808301526101808101516101a083016101e09052610200830161045c916107cf565b906101a08101517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09283858203016101c0860152610499916107cf565b906101c0015191838203016101e08401526104b3916107cf565b0390f35b60206104cd60a06104c73661077e565b01610906565b3b1515604051908152f35b6104e13661077e565b6104ed60a08201610906565b6104f960c08301610906565b61050560e08401610906565b9061016061010094610518868201610906565b9361012090610528828401610906565b9061014091610538838601610927565b9361055161054a610180880188610934565b3691610895565b602081519101209761056a61054a6101a0890189610934565b602081519101209961058361054a6101c08a018a610934565b602081519101209b6040519d8e918a35602084015260208b0135604084015260408b0135606084015260608b0135608084015260808b013560a084015273ffffffffffffffffffffffffffffffffffffffff978880968180941660c08701521660e08501521691015216908b0152169088015215158287015201356101808501526101a08401526101c08301526101e09081830152815261020081019181831067ffffffffffffffff84111761067157507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0090826040526020835261066c6102208201826107cf565b030190f35b6041907f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6040813601126100d057813567ffffffffffffffff918282116100d0576101e09082360301126100d0576106f5908301610985565b60405160208101917f1901000000000000000000000000000000000000000000000000000000000000835260243560228301526042820152604281526080810192818410908411176107505760209350826040525190208152f35b6041847f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc906020828201126100d0576004359167ffffffffffffffff83116100d057826101e0920301126100d05760040190565b919082519283825260005b8481106108195750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b6020818301810151848301820152016107da565b6101e0810190811067ffffffffffffffff82111761084a57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040810190811067ffffffffffffffff82111761084a57604052565b92919267ffffffffffffffff9182811161084a5760405192601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011684019081118482101761084a576040528294818452818301116100d0578281602093846000960137010152565b3573ffffffffffffffffffffffffffffffffffffffff811681036100d05790565b3580151581036100d05790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156100d0570180359067ffffffffffffffff82116100d0576020019181360383136100d057565b61099160a08201610906565b9061099e60c08201610906565b6109aa60e08301610906565b90610160610100936109bd858201610906565b92610120956109cd878401610906565b90610140916109dd838601610927565b92610180946109f161054a87890189610934565b6020815191012098610a0a61054a6101a08a018a610934565b602081519101209a610a2361054a6101c08b018b610934565b602081519101209c6040519e8f927fb91209a767a8178c503c992a2db0dd232393048d748c43a04d40fcccacc0df0060208501528b35604085015260208c0135606085015260408c0135608085015260608c013560a085015260808c013560c085015273ffffffffffffffffffffffffffffffffffffffff988980978180951660e088015216908501521691015216908b0152168489015215159087015201356101a08501526101c08401526101e083015261020090818301528152610220810181811067ffffffffffffffff82111761084a576040526020815191012090565b519073ffffffffffffffffffffffffffffffffffffffff821682036100d05756fea26469706673582212201805f314460b1a5374bb253f72f024bdc8ea21cc2e77073b1164f84307a2015264736f6c63430008150033", + "nonce": "0x9" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xb19713a8dfe84120ca9a90e8908450883ef3458d28c96bdc9a23114b3fe3f089", + "transactionType": "CREATE", + "contractName": "FacilitatorSwap", + "contractAddress": "0x8eE74f511c7e46D96E46C364009e69a9DeddC20F", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xf29f5fc83c9310c887efce9d68cae1f046b6511b", + "gas": "0xb0beb", + "value": "0x0", + "data": "0x6080806040523461003c57600080546001600160a01b031916736b3ea22c757bbf9c78ccaaa2ed9562b57001720b1790556108bb90816100428239f35b600080fdfe60406080815260048036101561001457600080fd5b600091823560e01c80632499e3a2146101af578063c851cc32146101375763e1f21c671461004157600080fd5b346101335760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013357826100796106ec565b926024359073ffffffffffffffffffffffffffffffffffffffff9081831680930361012f57602093604492865197889586947f095ea7b300000000000000000000000000000000000000000000000000000000865285015284356024850152165af190811561012657506100eb575080f35b6020813d821161011e575b8161010360209383610642565b8101031261011a5751801515036101175780f35b80fd5b5080fd5b3d91506100f6565b513d84823e3d90fd5b8380fd5b8280fd5b83346101175760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101175773ffffffffffffffffffffffffffffffffffffffff6101846106ec565b167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617815580f35b5082346101175760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101175767ffffffffffffffff8335818111610133576101ff903690860161060c565b93909460249283358181116106085761021b903690840161060c565b505060443581811161060857610234903690840161060c565b50506064358181116106085761024d903690840161060c565b60849491943583811161060457610267903690860161060c565b96909460a435948511610600573660238601121561060057848101359761028d896106b2565b9761029a8651998a610642565b8989526020998a8a0197368683830101116105ac57818d92878e93018b378b0101528a8073ffffffffffffffffffffffffffffffffffffffff988982541690828d51925af19b3d156105f8573d9c6102f18e6106b2565b9d88519e8f906103019082610642565b528d8d8d3d92013e5b156105f4578d61032060449c9d9e9f8390610730565b88517fc3c1f2ec0000000000000000000000000000000000000000000000000000000081528681018f9052813588820152818f01359d81019d909d528089013560648e0152606081013560848e0152608081013560a48e01528c60c48b61038960a0850161070f565b169101528c60e48b61039d60c0850161070f565b169101528c6101048b6103b260e0850161070f565b169101528c6101248b6103c8610100850161070f565b169101528c6101448b6103de610120850161070f565b169101526101408101358015158091036105f0578d8f9261049590829361016484015261016081013561018484015261043261041e610180830183610798565b6101e06101a48701526102048601916107e8565b6104856104796104466101a0850185610798565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc949185898403016101c48a01526107e8565b926101c0810190610798565b91858403016101e48601526107e8565b038173490fb03f26b1c384d24f95e5771299770fef565f5af49b8c156105e4578e9c6105b0575b5060a0916104c991610730565b0135948786168096036105ac5715610581573595861680960361057d57156105535750509261053f92827f9a150784ee1734e823c00b5a817fab779b92b02d62cbfdc1c509b1ed3054c2e8999a9561054d979451998a998a5289015287015235606086015260c0608086015260c0850190610827565b9083820360a0850152610827565b0390a180f35b60328a917f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b8a80fd5b838c6032857f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b8c80fd5b909b508c81813d83116105dd575b6105c88183610642565b810103126105d957519a60a06104bc565b8d80fd5b503d6105be565b8e8951903d90823e3d90fd5b8f80fd5b8b80fd5b60609c61030a565b8880fd5b8780fd5b8580fd5b9181601f8401121561063d5782359167ffffffffffffffff831161063d576020808501948460051b01011161063d57565b600080fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761068357604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff811161068357601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361063d57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361063d57565b9015610769578035907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe218136030182121561063d570190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561063d57016020813591019167ffffffffffffffff821161063d57813603831361063d57565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b919082519283825260005b8481106108715750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b60208183018101518483018201520161083256fea2646970667358221220502c9b787c38b03faace0f456e585cdc4b8fd1097bd573294dc0fb27aa5c3de464736f6c63430008150033", + "nonce": "0xa" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [ + "src/libraries/OrderEngine.sol:OrderEngine:0x490fb03f26b1c384d24f95e5771299770fef565f" + ], + "pending": [ + "0xf22157bc265e79fb7b7fc419044fb340e5f547f4d1a94ab6d60d751a48687be5", + "0xb19713a8dfe84120ca9a90e8908450883ef3458d28c96bdc9a23114b3fe3f089" + ], + "returns": {}, + "timestamp": 1712310260, + "chain": 1890, + "multi": false, + "commit": "9a9f020" +} \ No newline at end of file diff --git a/broadcast/deployFacilitatorSwapContract.s.sol/1890/run-1712310267.json b/broadcast/deployFacilitatorSwapContract.s.sol/1890/run-1712310267.json new file mode 100644 index 0000000..f0bd5be --- /dev/null +++ b/broadcast/deployFacilitatorSwapContract.s.sol/1890/run-1712310267.json @@ -0,0 +1,82 @@ +{ + "transactions": [ + { + "hash": "0xf22157bc265e79fb7b7fc419044fb340e5f547f4d1a94ab6d60d751a48687be5", + "transactionType": "CREATE", + "contractName": "OrderEngine", + "contractAddress": "0x490Fb03F26B1c384D24f95e5771299770fef565f", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xf29f5fc83c9310c887efce9d68cae1f046b6511b", + "gas": "0xd7c66", + "data": "0x6080806040523461001a57610b5b9081610020823930815050f35b600080fdfe608060405260048036101561001357600080fd5b60003560e01c90816321cd19a91461069f5781634416e986146104d857816395de97cc146104b7578163b4c07547146100d557508063b91611f41461007c5763c3c1f2ec1461006157600080fd5b602061007461006f3661077e565b610985565b604051908152f35b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d05760206040517fb91209a767a8178c503c992a2db0dd232393048d748c43a04d40fcccacc0df008152f35b600080fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d05780359067ffffffffffffffff82116100d057366023830112156100d05781602461012e93369301359101610895565b60606101c060405161013f8161082d565b60008152600060208201526000604082015260008382015260006080820152600060a0820152600060c0820152600060e0820152600061010082015260006101208201526000610140820152600061016082015282610180820152826101a082015201526101e0818051810103126100d05760208101516040820151916060810151608082015160a08301516101d760c08501610b04565b6101e360e08601610b04565b6101f06101008701610b04565b6101fd6101208801610b04565b9161020b6101408901610b04565b936101608901519586151587036100d0576101808a0151976101a08b0151996101c08c01519b6101e001519c6040519b60208d015260208c5261024d8c610879565b6040519c60208e015260208d526102638d610879565b6040519d60208f01528d6020815261027a90610879565b6040519e8f916102898361082d565b825260208201526040015260608d015260808c015273ffffffffffffffffffffffffffffffffffffffff1660a08b015273ffffffffffffffffffffffffffffffffffffffff1660c08a015273ffffffffffffffffffffffffffffffffffffffff1660e089015273ffffffffffffffffffffffffffffffffffffffff1661010088015273ffffffffffffffffffffffffffffffffffffffff1661012087015215156101408601526101608501526101808401526101a08301526101c082015260405180916020825280516020830152602081015160408301526040810151606083015260608101516080830152608081015160a083015260a081015173ffffffffffffffffffffffffffffffffffffffff1660c083015260c081015173ffffffffffffffffffffffffffffffffffffffff1660e083015260e081015173ffffffffffffffffffffffffffffffffffffffff1661010083015261010081015173ffffffffffffffffffffffffffffffffffffffff1661012083015261012081015173ffffffffffffffffffffffffffffffffffffffff1661014083015261014081015115156101608301526101608101516101808301526101808101516101a083016101e09052610200830161045c916107cf565b906101a08101517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09283858203016101c0860152610499916107cf565b906101c0015191838203016101e08401526104b3916107cf565b0390f35b60206104cd60a06104c73661077e565b01610906565b3b1515604051908152f35b6104e13661077e565b6104ed60a08201610906565b6104f960c08301610906565b61050560e08401610906565b9061016061010094610518868201610906565b9361012090610528828401610906565b9061014091610538838601610927565b9361055161054a610180880188610934565b3691610895565b602081519101209761056a61054a6101a0890189610934565b602081519101209961058361054a6101c08a018a610934565b602081519101209b6040519d8e918a35602084015260208b0135604084015260408b0135606084015260608b0135608084015260808b013560a084015273ffffffffffffffffffffffffffffffffffffffff978880968180941660c08701521660e08501521691015216908b0152169088015215158287015201356101808501526101a08401526101c08301526101e09081830152815261020081019181831067ffffffffffffffff84111761067157507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0090826040526020835261066c6102208201826107cf565b030190f35b6041907f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6040813601126100d057813567ffffffffffffffff918282116100d0576101e09082360301126100d0576106f5908301610985565b60405160208101917f1901000000000000000000000000000000000000000000000000000000000000835260243560228301526042820152604281526080810192818410908411176107505760209350826040525190208152f35b6041847f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc906020828201126100d0576004359167ffffffffffffffff83116100d057826101e0920301126100d05760040190565b919082519283825260005b8481106108195750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b6020818301810151848301820152016107da565b6101e0810190811067ffffffffffffffff82111761084a57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040810190811067ffffffffffffffff82111761084a57604052565b92919267ffffffffffffffff9182811161084a5760405192601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011684019081118482101761084a576040528294818452818301116100d0578281602093846000960137010152565b3573ffffffffffffffffffffffffffffffffffffffff811681036100d05790565b3580151581036100d05790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156100d0570180359067ffffffffffffffff82116100d0576020019181360383136100d057565b61099160a08201610906565b9061099e60c08201610906565b6109aa60e08301610906565b90610160610100936109bd858201610906565b92610120956109cd878401610906565b90610140916109dd838601610927565b92610180946109f161054a87890189610934565b6020815191012098610a0a61054a6101a08a018a610934565b602081519101209a610a2361054a6101c08b018b610934565b602081519101209c6040519e8f927fb91209a767a8178c503c992a2db0dd232393048d748c43a04d40fcccacc0df0060208501528b35604085015260208c0135606085015260408c0135608085015260608c013560a085015260808c013560c085015273ffffffffffffffffffffffffffffffffffffffff988980978180951660e088015216908501521691015216908b0152168489015215159087015201356101a08501526101c08401526101e083015261020090818301528152610220810181811067ffffffffffffffff82111761084a576040526020815191012090565b519073ffffffffffffffffffffffffffffffffffffffff821682036100d05756fea26469706673582212201805f314460b1a5374bb253f72f024bdc8ea21cc2e77073b1164f84307a2015264736f6c63430008150033", + "nonce": "0x9" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xb19713a8dfe84120ca9a90e8908450883ef3458d28c96bdc9a23114b3fe3f089", + "transactionType": "CREATE", + "contractName": "FacilitatorSwap", + "contractAddress": "0x8eE74f511c7e46D96E46C364009e69a9DeddC20F", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xf29f5fc83c9310c887efce9d68cae1f046b6511b", + "gas": "0xb0beb", + "value": "0x0", + "data": "0x6080806040523461003c57600080546001600160a01b031916736b3ea22c757bbf9c78ccaaa2ed9562b57001720b1790556108bb90816100428239f35b600080fdfe60406080815260048036101561001457600080fd5b600091823560e01c80632499e3a2146101af578063c851cc32146101375763e1f21c671461004157600080fd5b346101335760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013357826100796106ec565b926024359073ffffffffffffffffffffffffffffffffffffffff9081831680930361012f57602093604492865197889586947f095ea7b300000000000000000000000000000000000000000000000000000000865285015284356024850152165af190811561012657506100eb575080f35b6020813d821161011e575b8161010360209383610642565b8101031261011a5751801515036101175780f35b80fd5b5080fd5b3d91506100f6565b513d84823e3d90fd5b8380fd5b8280fd5b83346101175760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101175773ffffffffffffffffffffffffffffffffffffffff6101846106ec565b167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617815580f35b5082346101175760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101175767ffffffffffffffff8335818111610133576101ff903690860161060c565b93909460249283358181116106085761021b903690840161060c565b505060443581811161060857610234903690840161060c565b50506064358181116106085761024d903690840161060c565b60849491943583811161060457610267903690860161060c565b96909460a435948511610600573660238601121561060057848101359761028d896106b2565b9761029a8651998a610642565b8989526020998a8a0197368683830101116105ac57818d92878e93018b378b0101528a8073ffffffffffffffffffffffffffffffffffffffff988982541690828d51925af19b3d156105f8573d9c6102f18e6106b2565b9d88519e8f906103019082610642565b528d8d8d3d92013e5b156105f4578d61032060449c9d9e9f8390610730565b88517fc3c1f2ec0000000000000000000000000000000000000000000000000000000081528681018f9052813588820152818f01359d81019d909d528089013560648e0152606081013560848e0152608081013560a48e01528c60c48b61038960a0850161070f565b169101528c60e48b61039d60c0850161070f565b169101528c6101048b6103b260e0850161070f565b169101528c6101248b6103c8610100850161070f565b169101528c6101448b6103de610120850161070f565b169101526101408101358015158091036105f0578d8f9261049590829361016484015261016081013561018484015261043261041e610180830183610798565b6101e06101a48701526102048601916107e8565b6104856104796104466101a0850185610798565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc949185898403016101c48a01526107e8565b926101c0810190610798565b91858403016101e48601526107e8565b038173490fb03f26b1c384d24f95e5771299770fef565f5af49b8c156105e4578e9c6105b0575b5060a0916104c991610730565b0135948786168096036105ac5715610581573595861680960361057d57156105535750509261053f92827f9a150784ee1734e823c00b5a817fab779b92b02d62cbfdc1c509b1ed3054c2e8999a9561054d979451998a998a5289015287015235606086015260c0608086015260c0850190610827565b9083820360a0850152610827565b0390a180f35b60328a917f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b8a80fd5b838c6032857f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b8c80fd5b909b508c81813d83116105dd575b6105c88183610642565b810103126105d957519a60a06104bc565b8d80fd5b503d6105be565b8e8951903d90823e3d90fd5b8f80fd5b8b80fd5b60609c61030a565b8880fd5b8780fd5b8580fd5b9181601f8401121561063d5782359167ffffffffffffffff831161063d576020808501948460051b01011161063d57565b600080fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761068357604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff811161068357601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361063d57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361063d57565b9015610769578035907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe218136030182121561063d570190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561063d57016020813591019167ffffffffffffffff821161063d57813603831361063d57565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b919082519283825260005b8481106108715750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b60208183018101518483018201520161083256fea2646970667358221220502c9b787c38b03faace0f456e585cdc4b8fd1097bd573294dc0fb27aa5c3de464736f6c63430008150033", + "nonce": "0xa" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0xf22157bc265e79fb7b7fc419044fb340e5f547f4d1a94ab6d60d751a48687be5", + "transactionIndex": "0x0", + "blockHash": "0xd4aa34aeaebd5bd340a7b37c68524da75acefe9a410762b8f87c2f0dba6002e8", + "blockNumber": "0x47296eb", + "from": "0xf29F5fc83c9310c887EFce9D68Cae1F046B6511B", + "to": null, + "cumulativeGasUsed": "0xa6069", + "gasUsed": "0xa6069", + "contractAddress": "0x490Fb03F26B1c384D24f95e5771299770fef565f", + "logs": [], + "status": "0x1", + "root": "0x72bbe43250d55666e9c828c69bf9b0402029b6ff42cca302162aebfd60527097", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0" + }, + { + "transactionHash": "0xb19713a8dfe84120ca9a90e8908450883ef3458d28c96bdc9a23114b3fe3f089", + "transactionIndex": "0x1", + "blockHash": "0xd4aa34aeaebd5bd340a7b37c68524da75acefe9a410762b8f87c2f0dba6002e8", + "blockNumber": "0x47296eb", + "from": "0xf29F5fc83c9310c887EFce9D68Cae1F046B6511B", + "to": null, + "cumulativeGasUsed": "0x87fe3", + "gasUsed": "0x87fe3", + "contractAddress": "0x8eE74f511c7e46D96E46C364009e69a9DeddC20F", + "logs": [], + "status": "0x1", + "root": "0xb094c2858f623da94abd3b8064fc6fa90f2cdc51e01117c9fe25f0b0be70d318", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0" + } + ], + "libraries": [ + "src/libraries/OrderEngine.sol:OrderEngine:0x490fb03f26b1c384d24f95e5771299770fef565f" + ], + "pending": [], + "returns": {}, + "timestamp": 1712310267, + "chain": 1890, + "multi": false, + "commit": "9a9f020" +} \ No newline at end of file diff --git a/broadcast/deployFacilitatorSwapContract.s.sol/1890/run-latest.json b/broadcast/deployFacilitatorSwapContract.s.sol/1890/run-latest.json new file mode 100644 index 0000000..f0bd5be --- /dev/null +++ b/broadcast/deployFacilitatorSwapContract.s.sol/1890/run-latest.json @@ -0,0 +1,82 @@ +{ + "transactions": [ + { + "hash": "0xf22157bc265e79fb7b7fc419044fb340e5f547f4d1a94ab6d60d751a48687be5", + "transactionType": "CREATE", + "contractName": "OrderEngine", + "contractAddress": "0x490Fb03F26B1c384D24f95e5771299770fef565f", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xf29f5fc83c9310c887efce9d68cae1f046b6511b", + "gas": "0xd7c66", + "data": "0x6080806040523461001a57610b5b9081610020823930815050f35b600080fdfe608060405260048036101561001357600080fd5b60003560e01c90816321cd19a91461069f5781634416e986146104d857816395de97cc146104b7578163b4c07547146100d557508063b91611f41461007c5763c3c1f2ec1461006157600080fd5b602061007461006f3661077e565b610985565b604051908152f35b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d05760206040517fb91209a767a8178c503c992a2db0dd232393048d748c43a04d40fcccacc0df008152f35b600080fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d05780359067ffffffffffffffff82116100d057366023830112156100d05781602461012e93369301359101610895565b60606101c060405161013f8161082d565b60008152600060208201526000604082015260008382015260006080820152600060a0820152600060c0820152600060e0820152600061010082015260006101208201526000610140820152600061016082015282610180820152826101a082015201526101e0818051810103126100d05760208101516040820151916060810151608082015160a08301516101d760c08501610b04565b6101e360e08601610b04565b6101f06101008701610b04565b6101fd6101208801610b04565b9161020b6101408901610b04565b936101608901519586151587036100d0576101808a0151976101a08b0151996101c08c01519b6101e001519c6040519b60208d015260208c5261024d8c610879565b6040519c60208e015260208d526102638d610879565b6040519d60208f01528d6020815261027a90610879565b6040519e8f916102898361082d565b825260208201526040015260608d015260808c015273ffffffffffffffffffffffffffffffffffffffff1660a08b015273ffffffffffffffffffffffffffffffffffffffff1660c08a015273ffffffffffffffffffffffffffffffffffffffff1660e089015273ffffffffffffffffffffffffffffffffffffffff1661010088015273ffffffffffffffffffffffffffffffffffffffff1661012087015215156101408601526101608501526101808401526101a08301526101c082015260405180916020825280516020830152602081015160408301526040810151606083015260608101516080830152608081015160a083015260a081015173ffffffffffffffffffffffffffffffffffffffff1660c083015260c081015173ffffffffffffffffffffffffffffffffffffffff1660e083015260e081015173ffffffffffffffffffffffffffffffffffffffff1661010083015261010081015173ffffffffffffffffffffffffffffffffffffffff1661012083015261012081015173ffffffffffffffffffffffffffffffffffffffff1661014083015261014081015115156101608301526101608101516101808301526101808101516101a083016101e09052610200830161045c916107cf565b906101a08101517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09283858203016101c0860152610499916107cf565b906101c0015191838203016101e08401526104b3916107cf565b0390f35b60206104cd60a06104c73661077e565b01610906565b3b1515604051908152f35b6104e13661077e565b6104ed60a08201610906565b6104f960c08301610906565b61050560e08401610906565b9061016061010094610518868201610906565b9361012090610528828401610906565b9061014091610538838601610927565b9361055161054a610180880188610934565b3691610895565b602081519101209761056a61054a6101a0890189610934565b602081519101209961058361054a6101c08a018a610934565b602081519101209b6040519d8e918a35602084015260208b0135604084015260408b0135606084015260608b0135608084015260808b013560a084015273ffffffffffffffffffffffffffffffffffffffff978880968180941660c08701521660e08501521691015216908b0152169088015215158287015201356101808501526101a08401526101c08301526101e09081830152815261020081019181831067ffffffffffffffff84111761067157507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0090826040526020835261066c6102208201826107cf565b030190f35b6041907f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6040813601126100d057813567ffffffffffffffff918282116100d0576101e09082360301126100d0576106f5908301610985565b60405160208101917f1901000000000000000000000000000000000000000000000000000000000000835260243560228301526042820152604281526080810192818410908411176107505760209350826040525190208152f35b6041847f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc906020828201126100d0576004359167ffffffffffffffff83116100d057826101e0920301126100d05760040190565b919082519283825260005b8481106108195750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b6020818301810151848301820152016107da565b6101e0810190811067ffffffffffffffff82111761084a57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040810190811067ffffffffffffffff82111761084a57604052565b92919267ffffffffffffffff9182811161084a5760405192601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011684019081118482101761084a576040528294818452818301116100d0578281602093846000960137010152565b3573ffffffffffffffffffffffffffffffffffffffff811681036100d05790565b3580151581036100d05790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156100d0570180359067ffffffffffffffff82116100d0576020019181360383136100d057565b61099160a08201610906565b9061099e60c08201610906565b6109aa60e08301610906565b90610160610100936109bd858201610906565b92610120956109cd878401610906565b90610140916109dd838601610927565b92610180946109f161054a87890189610934565b6020815191012098610a0a61054a6101a08a018a610934565b602081519101209a610a2361054a6101c08b018b610934565b602081519101209c6040519e8f927fb91209a767a8178c503c992a2db0dd232393048d748c43a04d40fcccacc0df0060208501528b35604085015260208c0135606085015260408c0135608085015260608c013560a085015260808c013560c085015273ffffffffffffffffffffffffffffffffffffffff988980978180951660e088015216908501521691015216908b0152168489015215159087015201356101a08501526101c08401526101e083015261020090818301528152610220810181811067ffffffffffffffff82111761084a576040526020815191012090565b519073ffffffffffffffffffffffffffffffffffffffff821682036100d05756fea26469706673582212201805f314460b1a5374bb253f72f024bdc8ea21cc2e77073b1164f84307a2015264736f6c63430008150033", + "nonce": "0x9" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xb19713a8dfe84120ca9a90e8908450883ef3458d28c96bdc9a23114b3fe3f089", + "transactionType": "CREATE", + "contractName": "FacilitatorSwap", + "contractAddress": "0x8eE74f511c7e46D96E46C364009e69a9DeddC20F", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xf29f5fc83c9310c887efce9d68cae1f046b6511b", + "gas": "0xb0beb", + "value": "0x0", + "data": "0x6080806040523461003c57600080546001600160a01b031916736b3ea22c757bbf9c78ccaaa2ed9562b57001720b1790556108bb90816100428239f35b600080fdfe60406080815260048036101561001457600080fd5b600091823560e01c80632499e3a2146101af578063c851cc32146101375763e1f21c671461004157600080fd5b346101335760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013357826100796106ec565b926024359073ffffffffffffffffffffffffffffffffffffffff9081831680930361012f57602093604492865197889586947f095ea7b300000000000000000000000000000000000000000000000000000000865285015284356024850152165af190811561012657506100eb575080f35b6020813d821161011e575b8161010360209383610642565b8101031261011a5751801515036101175780f35b80fd5b5080fd5b3d91506100f6565b513d84823e3d90fd5b8380fd5b8280fd5b83346101175760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101175773ffffffffffffffffffffffffffffffffffffffff6101846106ec565b167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617815580f35b5082346101175760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101175767ffffffffffffffff8335818111610133576101ff903690860161060c565b93909460249283358181116106085761021b903690840161060c565b505060443581811161060857610234903690840161060c565b50506064358181116106085761024d903690840161060c565b60849491943583811161060457610267903690860161060c565b96909460a435948511610600573660238601121561060057848101359761028d896106b2565b9761029a8651998a610642565b8989526020998a8a0197368683830101116105ac57818d92878e93018b378b0101528a8073ffffffffffffffffffffffffffffffffffffffff988982541690828d51925af19b3d156105f8573d9c6102f18e6106b2565b9d88519e8f906103019082610642565b528d8d8d3d92013e5b156105f4578d61032060449c9d9e9f8390610730565b88517fc3c1f2ec0000000000000000000000000000000000000000000000000000000081528681018f9052813588820152818f01359d81019d909d528089013560648e0152606081013560848e0152608081013560a48e01528c60c48b61038960a0850161070f565b169101528c60e48b61039d60c0850161070f565b169101528c6101048b6103b260e0850161070f565b169101528c6101248b6103c8610100850161070f565b169101528c6101448b6103de610120850161070f565b169101526101408101358015158091036105f0578d8f9261049590829361016484015261016081013561018484015261043261041e610180830183610798565b6101e06101a48701526102048601916107e8565b6104856104796104466101a0850185610798565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc949185898403016101c48a01526107e8565b926101c0810190610798565b91858403016101e48601526107e8565b038173490fb03f26b1c384d24f95e5771299770fef565f5af49b8c156105e4578e9c6105b0575b5060a0916104c991610730565b0135948786168096036105ac5715610581573595861680960361057d57156105535750509261053f92827f9a150784ee1734e823c00b5a817fab779b92b02d62cbfdc1c509b1ed3054c2e8999a9561054d979451998a998a5289015287015235606086015260c0608086015260c0850190610827565b9083820360a0850152610827565b0390a180f35b60328a917f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b8a80fd5b838c6032857f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b8c80fd5b909b508c81813d83116105dd575b6105c88183610642565b810103126105d957519a60a06104bc565b8d80fd5b503d6105be565b8e8951903d90823e3d90fd5b8f80fd5b8b80fd5b60609c61030a565b8880fd5b8780fd5b8580fd5b9181601f8401121561063d5782359167ffffffffffffffff831161063d576020808501948460051b01011161063d57565b600080fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761068357604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff811161068357601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361063d57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361063d57565b9015610769578035907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe218136030182121561063d570190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561063d57016020813591019167ffffffffffffffff821161063d57813603831361063d57565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b919082519283825260005b8481106108715750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b60208183018101518483018201520161083256fea2646970667358221220502c9b787c38b03faace0f456e585cdc4b8fd1097bd573294dc0fb27aa5c3de464736f6c63430008150033", + "nonce": "0xa" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0xf22157bc265e79fb7b7fc419044fb340e5f547f4d1a94ab6d60d751a48687be5", + "transactionIndex": "0x0", + "blockHash": "0xd4aa34aeaebd5bd340a7b37c68524da75acefe9a410762b8f87c2f0dba6002e8", + "blockNumber": "0x47296eb", + "from": "0xf29F5fc83c9310c887EFce9D68Cae1F046B6511B", + "to": null, + "cumulativeGasUsed": "0xa6069", + "gasUsed": "0xa6069", + "contractAddress": "0x490Fb03F26B1c384D24f95e5771299770fef565f", + "logs": [], + "status": "0x1", + "root": "0x72bbe43250d55666e9c828c69bf9b0402029b6ff42cca302162aebfd60527097", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0" + }, + { + "transactionHash": "0xb19713a8dfe84120ca9a90e8908450883ef3458d28c96bdc9a23114b3fe3f089", + "transactionIndex": "0x1", + "blockHash": "0xd4aa34aeaebd5bd340a7b37c68524da75acefe9a410762b8f87c2f0dba6002e8", + "blockNumber": "0x47296eb", + "from": "0xf29F5fc83c9310c887EFce9D68Cae1F046B6511B", + "to": null, + "cumulativeGasUsed": "0x87fe3", + "gasUsed": "0x87fe3", + "contractAddress": "0x8eE74f511c7e46D96E46C364009e69a9DeddC20F", + "logs": [], + "status": "0x1", + "root": "0xb094c2858f623da94abd3b8064fc6fa90f2cdc51e01117c9fe25f0b0be70d318", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0" + } + ], + "libraries": [ + "src/libraries/OrderEngine.sol:OrderEngine:0x490fb03f26b1c384d24f95e5771299770fef565f" + ], + "pending": [], + "returns": {}, + "timestamp": 1712310267, + "chain": 1890, + "multi": false, + "commit": "9a9f020" +} \ No newline at end of file diff --git a/broadcast/deployOrderEngine.s.sol/11155111/run-1703142616.json b/broadcast/deployOrderEngine.s.sol/11155111/run-1703142616.json new file mode 100644 index 0000000..997a512 --- /dev/null +++ b/broadcast/deployOrderEngine.s.sol/11155111/run-1703142616.json @@ -0,0 +1,125 @@ +{ + "transactions": [ + { + "hash": "0x84e9a949bd1891141ec9e5c8043ef72b22d519b9cf2e8234c260b07d2206b436", + "transactionType": "CREATE", + "contractName": "OrderEngine", + "contractAddress": "0xfb3E436cAFC6723d160D17fF33b38598156aC102", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "gas": "0x59318", + "data": "0x6080806040523461001a576104219081610020823930815050f35b600080fdfe608080604052600436101561001357600080fd5b600090813560e01c90816395de97cc1461026557508063b91611f41461020e5763c3c1f2ec1461004257600080fd5b61004b36610283565b61005760a082016102d9565b9061006460c082016102d9565b9161007160e083016102d9565b9161007f61010082016102d9565b9061008d61012082016102d9565b90610140810135801515810361020a57610100610160936020986100bf6100b86101808701876102fa565b369161034b565b8a8151910120966100d76100b86101a08801886102fa565b8b8151910120986100ef6100b86101c08901896102fa565b8c81519101209a7f405c8d592eac87d960001fca48881b9679b0f000df8f68c6cef96559a6738fad6040519d8e01528c604089359101528c606060208a01359101528c608060408a01359101528c60a060608a01359101528c60c060808a01359101528c73ffffffffffffffffffffffffffffffffffffffff968780968180961660e085015216910152166101208c0152166101408a01521683880152151561018087015201356101a08501526101c08401526101e08301526102009081830152815261022081019080821067ffffffffffffffff8311176101dd5760209250816040528281519101208152f35b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8780fd5b50807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102625760206040517f405c8d592eac87d960001fca48881b9679b0f000df8f68c6cef96559a6738fad8152f35b80fd5b60209061027c60a061027636610283565b016102d9565b3b15158152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc906020828201126102d4576004359167ffffffffffffffff83116102d457826101e0920301126102d45760040190565b600080fd5b3573ffffffffffffffffffffffffffffffffffffffff811681036102d45790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102d4570180359067ffffffffffffffff82116102d4576020019181360383136102d457565b92919267ffffffffffffffff918281116103bc5760405192601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168401908111848210176103bc576040528294818452818301116102d4578281602093846000960137010152565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220fcf2e71d4fed2f596a1a465e75f3db24ccadee7f0fcc77fdb4822408a1d6c59964736f6c63430008150033", + "nonce": "0x6", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x12ba03167ef5332e85d2bc822a30d73574c7d689fdfd4b90ade6b927c40a8724", + "transactionType": "CREATE", + "contractName": "Predicates", + "contractAddress": "0x41023Ee1Bb9d3770c7eeb0Ce2935e7d766c77E01", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "gas": "0x5dd9f", + "value": "0x0", + "data": "0x6080806040523461001657610464908161001c8239f35b600080fdfe604060808152600436101561001357600080fd5b6000803560e01c80633d303c92146102265780634f38e2b8146101f55780636fe7b0ba146101c457806374261145146101a8578063bf15fcd814610157578063bf797959146100dd578063bfa75143146100b45763ca4ece221461007657600080fd5b346100b15760206100948361008a366102e9565b9093919330610408565b819391936100a7575b5050519015158152f35b109150838061009d565b80fd5b5090346100d9576020906100d06100ca366102e9565b916103a8565b90519015158152f35b5080fd5b5090346100d95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d9576004359167ffffffffffffffff83116100b1575061013c6101356020933690600401610247565b9030610408565b8192919261014e575b50519015158152f35b15915038610145565b50346100b1575061017061016a3661027a565b91610408565b901561017f5760209151908152f35b600482517f1f1b8f61000000000000000000000000000000000000000000000000000000008152fd5b5090346100d9576020906100d06101be366102e9565b9161034f565b50346100b15760206101d98361008a366102e9565b819391936101eb575050519015158152f35b149150838061009d565b50346100b157602061020a8361008a366102e9565b8193919361021c575050519015158152f35b119150838061009d565b50346100b1575061023961016a3661027a565b825191151582526020820152f35b9181601f840112156102755782359167ffffffffffffffff8311610275576020838186019501011161027557565b600080fd5b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126102755760043573ffffffffffffffffffffffffffffffffffffffff8116810361027557916024359067ffffffffffffffff8211610275576102e591600401610247565b9091565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261027557600435916024359067ffffffffffffffff8211610275576102e591600401610247565b90939293848311610275578411610275578101920390565b9290919260005b63ffffffff821690811561039d5761013582610373928888610337565b81610392575b50610388579060201c90610356565b5050915050600190565b600191501438610379565b505050915050600090565b92909192600090815b63ffffffff82169081156103fc57610135826103ce928989610337565b90159081156103f0575b506103e7579060201c906103b1565b50509150915090565b600191501415386103d8565b50505050915050600190565b916000906020928294826040519283375afa60203d1416918261042757565b600051915056fea26469706673582212200458f875fadeeb52c1e054aa965d8292bed98c8059d7cbdeadebad7fe2b4b8e364736f6c63430008150033", + "nonce": "0x7", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x7d6f5d436a66e3817950f3222c6eb48f591cd50446d90b2b246924bcb5d1a6ce", + "transactionType": "CREATE", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0x1bE38977300a4077e1d632467782017b452971d8", + "function": null, + "arguments": [ + "0x41023Ee1Bb9d3770c7eeb0Ce2935e7d766c77E01", + "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8" + ], + "transaction": { + "type": "0x02", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "gas": "0x320276", + "value": "0x0", + "data": "0x61014034620002a6576001600160401b0362002dd8601f38829003908101601f191684019083821185831017620002905780859160409485948552833981010312620002a65782516001600160a01b039384821691829003620002a6576020015190848216808303620002a6578351906200007a82620002ab565b601d825260208201957f456c656b7472696b204c696d6974204f726465722050726f746f636f6c0000008752600260208751620000b781620002ab565b828152019761763160f01b8952600160005560018060a01b031994858354168355600154338782161760015589519b3391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a351902097208760e05261010098818a524660a05260208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f998a84528983015260608201524660808201523060a082015260a0815260c08101928184109084111762000290578288525190206080523060c0526101209687528315801562000287575b620002785750600480548316919091179055600380549091169190911790558151600081526001600160a01b03821660208201527f1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc9162000234917f649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed090604090a18351600081526001600160a01b0390911660208201529081906040820190565b0390a15190612b109283620002c8843960805183611d8f015260a05183611e8a015260c05183611d60015260e05183611dde01525182611e0401525181611dbb0152f35b63d92e233d60e01b8152600490fd5b50811562000193565b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620002905760405256fe610180604052600436101561001357600080fd5b60003560e01c80630610f4a714611b4157806315169dec14611b015780632024cbc114611a0e5780633644e515146119eb5780633c3efab4146119c45780635f2a64511461190957806369328dec146118705780636d70f7ae146118315780636fda538f146116ef578063715018a61461167357806379ba50971461156d5780638da5cb5b146115465780638efede3d1461147457806390d6e14c146113a2578063ab37f48614611363578063c2ee3a0814611340578063c415b95c14611319578063cf0f969d146112ed578063e30c3978146112c6578063f2fde38b146112445763fe61e35c1461010457600080fd5b3461049a5760e060031936011261049a5767ffffffffffffffff60043581811161049a57610136903690600401611bf1565b610120526101605260243581811161049a57610156903690600401611bf1565b60e0526101405260443581811161049a57610175903690600401611bf1565b60c0526101005260643581811161049a57610194903690600401611bf1565b60843583811161049a576101ac903690600401611b8c565b919060a43585811161049a576101c6903690600401611bf1565b93909560c43590811161049a576101e1903690600401611bf1565b93909533600052600760205260ff6040600020541615611214576002600054146111b6576002600055610120511561118c5760e051610120511480159061117e575b8015611172575b61086c5760005b61012051811061089657505050601481101561049f575b50505050505060005b610120518110610262576001600055005b610273816101205161016051611cc5565b906102848160e05161014051611c94565b356102958260c05161010051611c94565b3561029f84612353565b9361030d6102b06101208301611ca4565b6102bc60e08401611ca4565b906001600160a01b03604051927fa9059cbb0000000000000000000000000000000000000000000000000000000060208501521660248301528460448301526044825261030882611ec4565b61285c565b846000526006602052604060002054906101c08101601461032e8284611d05565b905010156103ba575b506001957f2b15903b1f1516345ba547119efb6a90ccb8012f1803cc933c0a28b9291a5fef92826001600160a01b0361037561010060c09601611ca4565b16956001600160a01b0361038c6101208401611ca4565b1697608093604051958652602086015260408501526060840152803582840152013560a0820152a301610251565b956103d76103d183986001600160a01b0394611d05565b90612a78565b916103e481959295612712565b166103f160a08a01611ca4565b90803b1561049a57876000889361043c82968a996040519b8c98899788967fb6e1471a0000000000000000000000000000000000000000000000000000000088528d600489016126db565b03925af191821561048e576001977f2b15903b1f1516345ba547119efb6a90ccb8012f1803cc933c0a28b9291a5fef9460c09461047f575b509250925095610337565b61048890611eb0565b38610474565b6040513d6000823e3d90fd5b600080fd5b6104a891612a78565b90949160805293926104bb608051612712565b82810361086c5760005b8181106107f357506001600160a01b03608051163b1561049a5760405160a0527f2499e3a20000000000000000000000000000000000000000000000000000000060a0515260c460a0510160c0600460a051015261012051905260e460a0510160e46101205160051b60a051010190610160519060005b61012051811061064b5750505061058a61056e60209260031960a051820301602460a051015260e051610140516127b0565b60031960a051820301604460a051015260c051610100516127b0565b60031960a051820301606460a051015282815201959060005b818110610623575050506000946105ea926105cd9260031960a051840301608460a05101526127b0565b60031960a05182030160a460a051015260a0519360a05193611f2e565b0360a051836001600160a01b03608051165af1801561048e57610613575b388080808080610248565b61061e60a051611eb0565b610608565b9091966020806001926001600160a01b0361063d8c611bd0565b1681520198019291016105a3565b9091927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c60a051820301835283357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe216101605136030181121561049a5760206107e860019382936101605101906107c96107ad6101e084358452868501358785015260408501356040850152606080860135908501526080808601359085015260a06001600160a01b03610700828801611bd0565b16908501526001600160a01b0361071960c08701611bd0565b1660c08501526001600160a01b0361073360e08701611bd0565b1660e08501526101006001600160a01b0361074f828801611bd0565b16908501526101206001600160a01b0361076a828801611bd0565b169085015261014061077d818701611be4565b1515908501526101608086013590850152610180908061079f83880188612760565b929093870152850191611f2e565b6101a06107bc81860186612760565b9185840390860152611f2e565b916107da6101c09182810190612760565b929091818503910152611f2e565b95019301910161053c565b8061086661080c610807600194868c611c94565b611ca4565b610817838888611c94565b3590604051917fa9059cbb0000000000000000000000000000000000000000000000000000000060208401526001600160a01b0360805116602484015260448301526044825261030882611ec4565b016104c5565b60046040517ffc235960000000000000000000000000000000000000000000000000000000008152fd5b6108a7816101205161016051611cc5565b906108b88160e05161014051611c94565b35916108ca8260c05161010051611c94565b359285831015611143576108e38360051b860186611d05565b9180916108ef85612353565b916020860135421161111257606086013515908115611105575b81156110fc575b5080156110f4575b6110ca576001600160a01b036109316101208701611ca4565b16600052600560205260ff604060002054161580156110a1575b6110775761095c6101008601611ca4565b6001600160a01b03806109726101208901611ca4565b1691161461104d576001600160a01b0361098e60a08701611ca4565b16158015611030575b8015611013575b8015610ff7575b610fcd5760c085016001600160a01b036109be82611ca4565b1615159081610fb0575b50610f8657816000526006602052604060002054604086013514610f5c576109f36101408601611cb8565b15610f2a57670de0b6b3a7640000808402848104821485151715610ed15788610a1b91612442565b906040870135808202918115918304141715610ed157610a4090606088013590612442565b10610f00578160005260066020526040600020805490848201809211610ed1575560808501358084810204841481151715610ed157610a86908460408801359102612442565b826000526006602052604086013560406000205411610ea757935b610ae36020610ab036896120c7565b604051809381927f95de97cc00000000000000000000000000000000000000000000000000000000835260048301612250565b038173fb3e436cafc6723d160d17ff33b38598156ac1025af490811561048e57600091610e6d575b5015610e0557610b71916020916001600160a01b03610b2c60a08a01611ca4565b16906040518095819482937f1626ba7e000000000000000000000000000000000000000000000000000000008452896004850152604060248501526044840191611f2e565b03915afa90811561048e57600091610d8a575b507fffffffff000000000000000000000000000000000000000000000000000000007f1626ba7e00000000000000000000000000000000000000000000000000000000911603610d60575b6101808401610bde8186611d05565b9050610d18575b506101a084016014610bf78287611d05565b90501015610c62575b505060019450610c2a90610c176101008501611ca4565b90610c2460a08601611ca4565b916127ed565b80610c38575b505001610231565b610c48610100610c5b9301611ca4565b906001600160a01b0360045416916127ed565b3880610c30565b610c776103d16001600160a01b039287611d05565b929091610c8381612712565b1690610c9160a08801611ca4565b9084600052600660205260406000205494833b1561049a57610cea87956000979388946040519e8f998a9889977f1ad047d2000000000000000000000000000000000000000000000000000000008952600489016126db565b03925af190811561048e57600195610c2a92610d09575b819250610c00565b610d1290611eb0565b38610d01565b610d25610d2b9186611d05565b90611f6d565b15610d365738610be5565b60046040517fb6629c02000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b90506020813d602011610dfd575b81610da560209383611ee0565b8101031261049a57517fffffffff000000000000000000000000000000000000000000000000000000008116810361049a577fffffffff00000000000000000000000000000000000000000000000000000000610b84565b3d9150610d98565b610e17610e2592610e1d923691612072565b83612614565b91909161247b565b6001600160a01b0380610e3a60a08801611ca4565b1691160315610bcf5760046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b90506020813d602011610e9f575b81610e8860209383611ee0565b8101031261049a57610e9990611f21565b38610b0b565b3d9150610e7b565b60046040517f17015bc1000000000000000000000000000000000000000000000000000000008152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60046040517fa0de07d3000000000000000000000000000000000000000000000000000000008152fd5b915085606085013511610f00576040840135916080850135938260005260066020526040860135604060002055610aa1565b60046040517fca92fdbb000000000000000000000000000000000000000000000000000000008152fd5b60046040517fd4dfdafe000000000000000000000000000000000000000000000000000000008152fd5b90506001600160a01b03610fc43392611ca4565b161415386109c8565b60046040517fd92e233d000000000000000000000000000000000000000000000000000000008152fd5b506001600160a01b0361100c60e08701611ca4565b16156109a5565b506001600160a01b036110296101008701611ca4565b161561099e565b506001600160a01b036110466101208701611ca4565b1615610997565b60046040517fdd807227000000000000000000000000000000000000000000000000000000008152fd5b60046040517ff84835a0000000000000000000000000000000000000000000000000000000008152fd5b506001600160a01b036110b76101008701611ca4565b1660005260ff604060002054161561094b565b60046040517f1f2a2005000000000000000000000000000000000000000000000000000000008152fd5b508615610918565b90501538610910565b6040870135159150610909565b602483604051907f2e775cae0000000000000000000000000000000000000000000000000000000082526004820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b508160c051141561022a565b5060c05160e0511415610223565b60046040517f521299a9000000000000000000000000000000000000000000000000000000008152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b60246040517fc0ae66ad000000000000000000000000000000000000000000000000000000008152336004820152fd5b3461049a57602060031936011261049a5761125d611bba565b611265611c22565b6001600160a01b0380911690817fffffffffffffffffffffffff00000000000000000000000000000000000000006002541617600255600154167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700600080a3005b3461049a57600060031936011261049a5760206001600160a01b0360025416604051908152f35b3461049a57602060031936011261049a5760043560005260066020526020604060002054604051908152f35b3461049a57600060031936011261049a5760206001600160a01b0360045416604051908152f35b3461049a57600060031936011261049a576020604051670de0b6b3a76400008152f35b3461049a57602060031936011261049a576001600160a01b03611384611bba565b166000526005602052602060ff604060002054166040519015158152f35b3461049a57602060031936011261049a576004356001600160a01b0380821680920361049a576113d0611c22565b8115610fcd576003549081169082821461144a57604080516001600160a01b03938416815292841660208401527fffffffffffffffffffffffff0000000000000000000000000000000000000000927f1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc9190a11617600355005b60046040517fea0f8928000000000000000000000000000000000000000000000000000000008152fd5b3461049a57602060031936011261049a5761148d611bba565b611495611c22565b6001600160a01b0390818116918215610fcd5760045490811683811461151c57604080516001600160a01b0392831681529390911660208401527fffffffffffffffffffffffff0000000000000000000000000000000000000000927f649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed09190a11617600455005b60046040517fa133328a000000000000000000000000000000000000000000000000000000008152fd5b3461049a57600060031936011261049a5760206001600160a01b0360015416604051908152f35b3461049a57600060031936011261049a576002546001600160a01b0333818316036115ef577fffffffffffffffffffffffff00000000000000000000000000000000000000008092166002556001549133908316176001553391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152fd5b3461049a57600060031936011261049a5761168c611c22565b60006001600160a01b037fffffffffffffffffffffffff00000000000000000000000000000000000000008060025416600255600154908116600155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461049a57604060031936011261049a5767ffffffffffffffff60043581811161049a57611721903690600401611bf1565b9160243590811161049a5761173a903690600401611bf1565b92611743611c22565b801561118c5783810361086c5760005b81811061175c57005b6001600160a01b039081611774610807838689611c94565b1615610fcd576001917f49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e2744176117b16117ac848a89611c94565b611cb8565b91806117c161080786898c611c94565b166000526118046020936005855260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b61181261080785888b611c94565b16916118226117ac858b8a611c94565b6040519015158152a201611753565b3461049a57602060031936011261049a576001600160a01b03611852611bba565b166000526007602052602060ff604060002054166040519015158152f35b3461049a57606060031936011261049a57611889611bba565b604435906001600160a01b039081831680930361049a576118a8611c22565b169081158015611901575b610fcd576118ff91604051917fa9059cbb000000000000000000000000000000000000000000000000000000006020840152602483015260243560448301526044825261030882611ec4565b005b5080156118b3565b3461049a5761191736611b59565b61192360a08201611ca4565b6001600160a01b033391160361199a5761193c81612353565b8060005260066020526040806000205492013591828114610f5c5760407f87b5f0afdc3a118b68246141c5bd338672ab3e901be636e27116238d284de6ac918151908482526020820152a16000526006602052604060002055600080f35b60046040517f4ca88867000000000000000000000000000000000000000000000000000000008152fd5b3461049a57600060031936011261049a5760206001600160a01b0360035416604051908152f35b3461049a57600060031936011261049a576020611a06611d56565b604051908152f35b3461049a57604060031936011261049a57611a27611bba565b602435908115159081830361049a576001600160a01b0390611a47611c22565b16918215610fcd578260005260076020528160ff60406000205416151514611ad7577fcba86444cdc912f5fa5f53c20361b3517933eb181876b3f4a0d47478c6a3039b91611ace602092856000526007845260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b604051908152a2005b60046040517f5b2625c0000000000000000000000000000000000000000000000000000000008152fd5b3461049a57602060031936011261049a5760043567ffffffffffffffff811161049a57611b37610d256020923690600401611b8c565b6040519015158152f35b3461049a576020611a06611b5436611b59565b612353565b6003199060208282011261049a576004359167ffffffffffffffff831161049a57826101e09203011261049a5760040190565b9181601f8401121561049a5782359167ffffffffffffffff831161049a576020838186019501011161049a57565b600435906001600160a01b038216820361049a57565b35906001600160a01b038216820361049a57565b3590811515820361049a57565b9181601f8401121561049a5782359167ffffffffffffffff831161049a576020808501948460051b01011161049a57565b6001600160a01b03600154163303611c3657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b91908110156111435760051b0190565b356001600160a01b038116810361049a5790565b35801515810361049a5790565b91908110156111435760051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe218136030182121561049a570190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561049a570180359067ffffffffffffffff821161049a5760200191813603831361049a57565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016301480611e87575b15611db1577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117611e585760405251902090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b507f00000000000000000000000000000000000000000000000000000000000000004614611d88565b67ffffffffffffffff8111611e5857604052565b6080810190811067ffffffffffffffff821117611e5857604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611e5857604052565b5190811515820361049a57565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b90611fc5906001600160a01b036003541692604093849283518095819482937f3d303c920000000000000000000000000000000000000000000000000000000084528560048501528760248501526044840191611f2e565b03915afa90811561202d576000928392611fed575b505081611fe5575090565b600191501490565b9080939250813d8311612026575b6120058183611ee0565b810103126120235750602061201982611f21565b9101513880611fda565b80fd5b503d611ffb565b82513d6000823e3d90fd5b67ffffffffffffffff8111611e5857601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b92919261207e82612038565b9161208c6040519384611ee0565b82948184528183011161049a578281602093846000960137010152565b9080601f8301121561049a578160206120c493359101612072565b90565b9190916101e090818185031261049a576040519182019067ffffffffffffffff9183811083821117611e58576040528294813584526020820135602085015260408201356040850152606082013560608501526080820135608085015261213060a08301611bd0565b60a085015261214160c08301611bd0565b60c085015261215260e08301611bd0565b60e0850152610100612165818401611bd0565b90850152610120612177818401611bd0565b90850152610140612189818401611be4565b9085015261016080830135908501526101808083013584811161049a57826121b29185016120a9565b908501526101a08083013584811161049a57826121d09185016120a9565b908501526101c0928383013590811161049a576121ed92016120a9565b910152565b919082519283825260005b84811061223c5750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b6020818301810151848301820152016121fd565b906120c4916020815281516020820152602082015160408201526040820151606082015260608201516080820152608082015160a082015260a08201516001600160a01b0380911660c08301528060c08401511660e083015260e0830151816101009116818401528301518161012091168184015283015190610140911681830152820151610160901515818301528201516101809081830152820151906101e06123086101a09382858501526102008401906121f2565b928401516123437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0946101c0928686830301848701526121f2565b94015192828503019101526121f2565b60206123636123969236906120c7565b604051809381927fc3c1f2ec00000000000000000000000000000000000000000000000000000000835260048301612250565b038173fb3e436cafc6723d160d17ff33b38598156ac1025af490811561048e57600091612411575b506123c7611d56565b906040519060208201927f19010000000000000000000000000000000000000000000000000000000000008452602283015260428201526042815261240b81611ec4565b51902090565b906020823d821161243a575b8161242a60209383611ee0565b81010312612023575051386123be565b3d915061241d565b811561244c570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60058110156125e5578061248c5750565b600181036124f25760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152fd5b600281036125585760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152fd5b60031461256157565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9060418151146000146126425761263e916020820151906060604084015193015160001a9061264c565b9091565b5050600090600290565b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083116126cf5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156126c25781516001600160a01b038116156126bc579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b926001600160a01b036120c498969360c0969386521660208501526040840152606083015260808201528160a08201520191611f2e565b6001600160a01b0316308114908115612757575b5061272d57565b60046040517f8a5039c1000000000000000000000000000000000000000000000000000000008152fd5b90501538612726565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561049a57016020813591019167ffffffffffffffff821161049a57813603831361049a57565b90918281527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831161049a5760209260051b809284830137010190565b91906001600160a01b03604051927f23b872dd00000000000000000000000000000000000000000000000000000000602085015216602483015230604483015260648201526064815260a081019181831067ffffffffffffffff841117611e585761285a9260405261285c565b565b6001600160a01b031690604051604081019080821067ffffffffffffffff831117611e58576128ed916040526020938482527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564858301526000808587829751910182855af13d156129a4573d916128d283612038565b926128e06040519485611ee0565b83523d868885013e6129a8565b908151806128fc575b50505050565b828491810103126120235750816129139101611f21565b15612920578080806128f6565b608490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b6060915b91929015612a2357508151156129bc575090565b3b156129c55790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b825190915015612a365750805190602001fd5b612a74906040519182917f08c379a00000000000000000000000000000000000000000000000000000000083526020600484015260248301906121f2565b0390fd5b9160148210612ab0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec6014843560601c9401920190565b60046040517fef356d7a000000000000000000000000000000000000000000000000000000008152fdfea2646970667358221220d87ea5dac76b4fe26365a437e82d4ea8ef37bd102b5e9128b5223f08d0ad7aa864736f6c6343000815003300000000000000000000000041023ee1bb9d3770c7eeb0ce2935e7d766c77e010000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8", + "nonce": "0x8", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xbe4e1fe9aa606e246e1397f5f3ac597e24febd93d68e1c80888b5c4bd798b526", + "transactionType": "CALL", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0x1bE38977300a4077e1d632467782017b452971d8", + "function": "manageOperatorPrivilege(address,bool)", + "arguments": [ + "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "true" + ], + "transaction": { + "type": "0x02", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "to": "0x1be38977300a4077e1d632467782017b452971d8", + "gas": "0x111af", + "value": "0x0", + "data": "0x2024cbc10000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b80000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x9", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionType": "CALL", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0x1bE38977300a4077e1d632467782017b452971d8", + "function": "updateTokenWhitelist(address[],bool[])", + "arguments": [ + "[0x057e8e2bC40ECff87e6F9b28750D5E7AC004Eab9, 0x3cf2c147d43C98Fa96d267572e3FD44A4D3940d4, 0x4B6b9B31c72836806B0B1104Cf1CdAB8A0E3BD66, 0x9Ee1Aa18F3FEB435f811d6AE2F71B7D2a4Adce0B, 0x124ABC63F20c6e2088078bd61e2Db100Ff30836e, 0xecf6Bdde77C77863Ae842b145f9ab296E5eAcAF9, 0x8bA5b0452b0a4da211579AA2e105c3da7C0Ad36c, 0x8488c316e23504B8554e4BdE9651802CD45aea24, 0xeDc98fc6240671dF8e7eD035CE39143320c1A174, 0xeEf8e3c318fb3d86489FB258847d028adC629e14]", + "[true, true, true, true, true, true, true, true, true, true]" + ], + "transaction": { + "type": "0x02", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "to": "0x1be38977300a4077e1d632467782017b452971d8", + "gas": "0x5c4d5", + "value": "0x0", + "data": "0x6fda538f000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000057e8e2bc40ecff87e6f9b28750d5e7ac004eab90000000000000000000000003cf2c147d43c98fa96d267572e3fd44a4d3940d40000000000000000000000004b6b9b31c72836806b0b1104cf1cdab8a0e3bd660000000000000000000000009ee1aa18f3feb435f811d6ae2f71b7d2a4adce0b000000000000000000000000124abc63f20c6e2088078bd61e2db100ff30836e000000000000000000000000ecf6bdde77c77863ae842b145f9ab296e5eacaf90000000000000000000000008ba5b0452b0a4da211579aa2e105c3da7c0ad36c0000000000000000000000008488c316e23504b8554e4bde9651802cd45aea24000000000000000000000000edc98fc6240671df8e7ed035ce39143320c1a174000000000000000000000000eef8e3c318fb3d86489fb258847d028adc629e14000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0xa", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [ + "src/libraries/OrderEngine.sol:OrderEngine:0xfb3e436cafc6723d160d17ff33b38598156ac102" + ], + "pending": [ + "0x84e9a949bd1891141ec9e5c8043ef72b22d519b9cf2e8234c260b07d2206b436", + "0x12ba03167ef5332e85d2bc822a30d73574c7d689fdfd4b90ade6b927c40a8724", + "0x7d6f5d436a66e3817950f3222c6eb48f591cd50446d90b2b246924bcb5d1a6ce", + "0xbe4e1fe9aa606e246e1397f5f3ac597e24febd93d68e1c80888b5c4bd798b526", + "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b" + ], + "returns": {}, + "timestamp": 1703142616, + "chain": 11155111, + "multi": false, + "commit": "951d56e" +} \ No newline at end of file diff --git a/broadcast/deployOrderEngine.s.sol/11155111/run-1703142631.json b/broadcast/deployOrderEngine.s.sol/11155111/run-1703142631.json new file mode 100644 index 0000000..1c93640 --- /dev/null +++ b/broadcast/deployOrderEngine.s.sol/11155111/run-1703142631.json @@ -0,0 +1,398 @@ +{ + "transactions": [ + { + "hash": "0x84e9a949bd1891141ec9e5c8043ef72b22d519b9cf2e8234c260b07d2206b436", + "transactionType": "CREATE", + "contractName": "OrderEngine", + "contractAddress": "0xfb3E436cAFC6723d160D17fF33b38598156aC102", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "gas": "0x59318", + "data": "0x6080806040523461001a576104219081610020823930815050f35b600080fdfe608080604052600436101561001357600080fd5b600090813560e01c90816395de97cc1461026557508063b91611f41461020e5763c3c1f2ec1461004257600080fd5b61004b36610283565b61005760a082016102d9565b9061006460c082016102d9565b9161007160e083016102d9565b9161007f61010082016102d9565b9061008d61012082016102d9565b90610140810135801515810361020a57610100610160936020986100bf6100b86101808701876102fa565b369161034b565b8a8151910120966100d76100b86101a08801886102fa565b8b8151910120986100ef6100b86101c08901896102fa565b8c81519101209a7f405c8d592eac87d960001fca48881b9679b0f000df8f68c6cef96559a6738fad6040519d8e01528c604089359101528c606060208a01359101528c608060408a01359101528c60a060608a01359101528c60c060808a01359101528c73ffffffffffffffffffffffffffffffffffffffff968780968180961660e085015216910152166101208c0152166101408a01521683880152151561018087015201356101a08501526101c08401526101e08301526102009081830152815261022081019080821067ffffffffffffffff8311176101dd5760209250816040528281519101208152f35b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8780fd5b50807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102625760206040517f405c8d592eac87d960001fca48881b9679b0f000df8f68c6cef96559a6738fad8152f35b80fd5b60209061027c60a061027636610283565b016102d9565b3b15158152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc906020828201126102d4576004359167ffffffffffffffff83116102d457826101e0920301126102d45760040190565b600080fd5b3573ffffffffffffffffffffffffffffffffffffffff811681036102d45790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102d4570180359067ffffffffffffffff82116102d4576020019181360383136102d457565b92919267ffffffffffffffff918281116103bc5760405192601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168401908111848210176103bc576040528294818452818301116102d4578281602093846000960137010152565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220fcf2e71d4fed2f596a1a465e75f3db24ccadee7f0fcc77fdb4822408a1d6c59964736f6c63430008150033", + "nonce": "0x6", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x12ba03167ef5332e85d2bc822a30d73574c7d689fdfd4b90ade6b927c40a8724", + "transactionType": "CREATE", + "contractName": "Predicates", + "contractAddress": "0x41023Ee1Bb9d3770c7eeb0Ce2935e7d766c77E01", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "gas": "0x5dd9f", + "value": "0x0", + "data": "0x6080806040523461001657610464908161001c8239f35b600080fdfe604060808152600436101561001357600080fd5b6000803560e01c80633d303c92146102265780634f38e2b8146101f55780636fe7b0ba146101c457806374261145146101a8578063bf15fcd814610157578063bf797959146100dd578063bfa75143146100b45763ca4ece221461007657600080fd5b346100b15760206100948361008a366102e9565b9093919330610408565b819391936100a7575b5050519015158152f35b109150838061009d565b80fd5b5090346100d9576020906100d06100ca366102e9565b916103a8565b90519015158152f35b5080fd5b5090346100d95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d9576004359167ffffffffffffffff83116100b1575061013c6101356020933690600401610247565b9030610408565b8192919261014e575b50519015158152f35b15915038610145565b50346100b1575061017061016a3661027a565b91610408565b901561017f5760209151908152f35b600482517f1f1b8f61000000000000000000000000000000000000000000000000000000008152fd5b5090346100d9576020906100d06101be366102e9565b9161034f565b50346100b15760206101d98361008a366102e9565b819391936101eb575050519015158152f35b149150838061009d565b50346100b157602061020a8361008a366102e9565b8193919361021c575050519015158152f35b119150838061009d565b50346100b1575061023961016a3661027a565b825191151582526020820152f35b9181601f840112156102755782359167ffffffffffffffff8311610275576020838186019501011161027557565b600080fd5b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126102755760043573ffffffffffffffffffffffffffffffffffffffff8116810361027557916024359067ffffffffffffffff8211610275576102e591600401610247565b9091565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261027557600435916024359067ffffffffffffffff8211610275576102e591600401610247565b90939293848311610275578411610275578101920390565b9290919260005b63ffffffff821690811561039d5761013582610373928888610337565b81610392575b50610388579060201c90610356565b5050915050600190565b600191501438610379565b505050915050600090565b92909192600090815b63ffffffff82169081156103fc57610135826103ce928989610337565b90159081156103f0575b506103e7579060201c906103b1565b50509150915090565b600191501415386103d8565b50505050915050600190565b916000906020928294826040519283375afa60203d1416918261042757565b600051915056fea26469706673582212200458f875fadeeb52c1e054aa965d8292bed98c8059d7cbdeadebad7fe2b4b8e364736f6c63430008150033", + "nonce": "0x7", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x7d6f5d436a66e3817950f3222c6eb48f591cd50446d90b2b246924bcb5d1a6ce", + "transactionType": "CREATE", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0x1bE38977300a4077e1d632467782017b452971d8", + "function": null, + "arguments": [ + "0x41023Ee1Bb9d3770c7eeb0Ce2935e7d766c77E01", + "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8" + ], + "transaction": { + "type": "0x02", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "gas": "0x320276", + "value": "0x0", + "data": "0x61014034620002a6576001600160401b0362002dd8601f38829003908101601f191684019083821185831017620002905780859160409485948552833981010312620002a65782516001600160a01b039384821691829003620002a6576020015190848216808303620002a6578351906200007a82620002ab565b601d825260208201957f456c656b7472696b204c696d6974204f726465722050726f746f636f6c0000008752600260208751620000b781620002ab565b828152019761763160f01b8952600160005560018060a01b031994858354168355600154338782161760015589519b3391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a351902097208760e05261010098818a524660a05260208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f998a84528983015260608201524660808201523060a082015260a0815260c08101928184109084111762000290578288525190206080523060c0526101209687528315801562000287575b620002785750600480548316919091179055600380549091169190911790558151600081526001600160a01b03821660208201527f1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc9162000234917f649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed090604090a18351600081526001600160a01b0390911660208201529081906040820190565b0390a15190612b109283620002c8843960805183611d8f015260a05183611e8a015260c05183611d60015260e05183611dde01525182611e0401525181611dbb0152f35b63d92e233d60e01b8152600490fd5b50811562000193565b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620002905760405256fe610180604052600436101561001357600080fd5b60003560e01c80630610f4a714611b4157806315169dec14611b015780632024cbc114611a0e5780633644e515146119eb5780633c3efab4146119c45780635f2a64511461190957806369328dec146118705780636d70f7ae146118315780636fda538f146116ef578063715018a61461167357806379ba50971461156d5780638da5cb5b146115465780638efede3d1461147457806390d6e14c146113a2578063ab37f48614611363578063c2ee3a0814611340578063c415b95c14611319578063cf0f969d146112ed578063e30c3978146112c6578063f2fde38b146112445763fe61e35c1461010457600080fd5b3461049a5760e060031936011261049a5767ffffffffffffffff60043581811161049a57610136903690600401611bf1565b610120526101605260243581811161049a57610156903690600401611bf1565b60e0526101405260443581811161049a57610175903690600401611bf1565b60c0526101005260643581811161049a57610194903690600401611bf1565b60843583811161049a576101ac903690600401611b8c565b919060a43585811161049a576101c6903690600401611bf1565b93909560c43590811161049a576101e1903690600401611bf1565b93909533600052600760205260ff6040600020541615611214576002600054146111b6576002600055610120511561118c5760e051610120511480159061117e575b8015611172575b61086c5760005b61012051811061089657505050601481101561049f575b50505050505060005b610120518110610262576001600055005b610273816101205161016051611cc5565b906102848160e05161014051611c94565b356102958260c05161010051611c94565b3561029f84612353565b9361030d6102b06101208301611ca4565b6102bc60e08401611ca4565b906001600160a01b03604051927fa9059cbb0000000000000000000000000000000000000000000000000000000060208501521660248301528460448301526044825261030882611ec4565b61285c565b846000526006602052604060002054906101c08101601461032e8284611d05565b905010156103ba575b506001957f2b15903b1f1516345ba547119efb6a90ccb8012f1803cc933c0a28b9291a5fef92826001600160a01b0361037561010060c09601611ca4565b16956001600160a01b0361038c6101208401611ca4565b1697608093604051958652602086015260408501526060840152803582840152013560a0820152a301610251565b956103d76103d183986001600160a01b0394611d05565b90612a78565b916103e481959295612712565b166103f160a08a01611ca4565b90803b1561049a57876000889361043c82968a996040519b8c98899788967fb6e1471a0000000000000000000000000000000000000000000000000000000088528d600489016126db565b03925af191821561048e576001977f2b15903b1f1516345ba547119efb6a90ccb8012f1803cc933c0a28b9291a5fef9460c09461047f575b509250925095610337565b61048890611eb0565b38610474565b6040513d6000823e3d90fd5b600080fd5b6104a891612a78565b90949160805293926104bb608051612712565b82810361086c5760005b8181106107f357506001600160a01b03608051163b1561049a5760405160a0527f2499e3a20000000000000000000000000000000000000000000000000000000060a0515260c460a0510160c0600460a051015261012051905260e460a0510160e46101205160051b60a051010190610160519060005b61012051811061064b5750505061058a61056e60209260031960a051820301602460a051015260e051610140516127b0565b60031960a051820301604460a051015260c051610100516127b0565b60031960a051820301606460a051015282815201959060005b818110610623575050506000946105ea926105cd9260031960a051840301608460a05101526127b0565b60031960a05182030160a460a051015260a0519360a05193611f2e565b0360a051836001600160a01b03608051165af1801561048e57610613575b388080808080610248565b61061e60a051611eb0565b610608565b9091966020806001926001600160a01b0361063d8c611bd0565b1681520198019291016105a3565b9091927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c60a051820301835283357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe216101605136030181121561049a5760206107e860019382936101605101906107c96107ad6101e084358452868501358785015260408501356040850152606080860135908501526080808601359085015260a06001600160a01b03610700828801611bd0565b16908501526001600160a01b0361071960c08701611bd0565b1660c08501526001600160a01b0361073360e08701611bd0565b1660e08501526101006001600160a01b0361074f828801611bd0565b16908501526101206001600160a01b0361076a828801611bd0565b169085015261014061077d818701611be4565b1515908501526101608086013590850152610180908061079f83880188612760565b929093870152850191611f2e565b6101a06107bc81860186612760565b9185840390860152611f2e565b916107da6101c09182810190612760565b929091818503910152611f2e565b95019301910161053c565b8061086661080c610807600194868c611c94565b611ca4565b610817838888611c94565b3590604051917fa9059cbb0000000000000000000000000000000000000000000000000000000060208401526001600160a01b0360805116602484015260448301526044825261030882611ec4565b016104c5565b60046040517ffc235960000000000000000000000000000000000000000000000000000000008152fd5b6108a7816101205161016051611cc5565b906108b88160e05161014051611c94565b35916108ca8260c05161010051611c94565b359285831015611143576108e38360051b860186611d05565b9180916108ef85612353565b916020860135421161111257606086013515908115611105575b81156110fc575b5080156110f4575b6110ca576001600160a01b036109316101208701611ca4565b16600052600560205260ff604060002054161580156110a1575b6110775761095c6101008601611ca4565b6001600160a01b03806109726101208901611ca4565b1691161461104d576001600160a01b0361098e60a08701611ca4565b16158015611030575b8015611013575b8015610ff7575b610fcd5760c085016001600160a01b036109be82611ca4565b1615159081610fb0575b50610f8657816000526006602052604060002054604086013514610f5c576109f36101408601611cb8565b15610f2a57670de0b6b3a7640000808402848104821485151715610ed15788610a1b91612442565b906040870135808202918115918304141715610ed157610a4090606088013590612442565b10610f00578160005260066020526040600020805490848201809211610ed1575560808501358084810204841481151715610ed157610a86908460408801359102612442565b826000526006602052604086013560406000205411610ea757935b610ae36020610ab036896120c7565b604051809381927f95de97cc00000000000000000000000000000000000000000000000000000000835260048301612250565b038173fb3e436cafc6723d160d17ff33b38598156ac1025af490811561048e57600091610e6d575b5015610e0557610b71916020916001600160a01b03610b2c60a08a01611ca4565b16906040518095819482937f1626ba7e000000000000000000000000000000000000000000000000000000008452896004850152604060248501526044840191611f2e565b03915afa90811561048e57600091610d8a575b507fffffffff000000000000000000000000000000000000000000000000000000007f1626ba7e00000000000000000000000000000000000000000000000000000000911603610d60575b6101808401610bde8186611d05565b9050610d18575b506101a084016014610bf78287611d05565b90501015610c62575b505060019450610c2a90610c176101008501611ca4565b90610c2460a08601611ca4565b916127ed565b80610c38575b505001610231565b610c48610100610c5b9301611ca4565b906001600160a01b0360045416916127ed565b3880610c30565b610c776103d16001600160a01b039287611d05565b929091610c8381612712565b1690610c9160a08801611ca4565b9084600052600660205260406000205494833b1561049a57610cea87956000979388946040519e8f998a9889977f1ad047d2000000000000000000000000000000000000000000000000000000008952600489016126db565b03925af190811561048e57600195610c2a92610d09575b819250610c00565b610d1290611eb0565b38610d01565b610d25610d2b9186611d05565b90611f6d565b15610d365738610be5565b60046040517fb6629c02000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b90506020813d602011610dfd575b81610da560209383611ee0565b8101031261049a57517fffffffff000000000000000000000000000000000000000000000000000000008116810361049a577fffffffff00000000000000000000000000000000000000000000000000000000610b84565b3d9150610d98565b610e17610e2592610e1d923691612072565b83612614565b91909161247b565b6001600160a01b0380610e3a60a08801611ca4565b1691160315610bcf5760046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b90506020813d602011610e9f575b81610e8860209383611ee0565b8101031261049a57610e9990611f21565b38610b0b565b3d9150610e7b565b60046040517f17015bc1000000000000000000000000000000000000000000000000000000008152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60046040517fa0de07d3000000000000000000000000000000000000000000000000000000008152fd5b915085606085013511610f00576040840135916080850135938260005260066020526040860135604060002055610aa1565b60046040517fca92fdbb000000000000000000000000000000000000000000000000000000008152fd5b60046040517fd4dfdafe000000000000000000000000000000000000000000000000000000008152fd5b90506001600160a01b03610fc43392611ca4565b161415386109c8565b60046040517fd92e233d000000000000000000000000000000000000000000000000000000008152fd5b506001600160a01b0361100c60e08701611ca4565b16156109a5565b506001600160a01b036110296101008701611ca4565b161561099e565b506001600160a01b036110466101208701611ca4565b1615610997565b60046040517fdd807227000000000000000000000000000000000000000000000000000000008152fd5b60046040517ff84835a0000000000000000000000000000000000000000000000000000000008152fd5b506001600160a01b036110b76101008701611ca4565b1660005260ff604060002054161561094b565b60046040517f1f2a2005000000000000000000000000000000000000000000000000000000008152fd5b508615610918565b90501538610910565b6040870135159150610909565b602483604051907f2e775cae0000000000000000000000000000000000000000000000000000000082526004820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b508160c051141561022a565b5060c05160e0511415610223565b60046040517f521299a9000000000000000000000000000000000000000000000000000000008152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b60246040517fc0ae66ad000000000000000000000000000000000000000000000000000000008152336004820152fd5b3461049a57602060031936011261049a5761125d611bba565b611265611c22565b6001600160a01b0380911690817fffffffffffffffffffffffff00000000000000000000000000000000000000006002541617600255600154167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700600080a3005b3461049a57600060031936011261049a5760206001600160a01b0360025416604051908152f35b3461049a57602060031936011261049a5760043560005260066020526020604060002054604051908152f35b3461049a57600060031936011261049a5760206001600160a01b0360045416604051908152f35b3461049a57600060031936011261049a576020604051670de0b6b3a76400008152f35b3461049a57602060031936011261049a576001600160a01b03611384611bba565b166000526005602052602060ff604060002054166040519015158152f35b3461049a57602060031936011261049a576004356001600160a01b0380821680920361049a576113d0611c22565b8115610fcd576003549081169082821461144a57604080516001600160a01b03938416815292841660208401527fffffffffffffffffffffffff0000000000000000000000000000000000000000927f1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc9190a11617600355005b60046040517fea0f8928000000000000000000000000000000000000000000000000000000008152fd5b3461049a57602060031936011261049a5761148d611bba565b611495611c22565b6001600160a01b0390818116918215610fcd5760045490811683811461151c57604080516001600160a01b0392831681529390911660208401527fffffffffffffffffffffffff0000000000000000000000000000000000000000927f649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed09190a11617600455005b60046040517fa133328a000000000000000000000000000000000000000000000000000000008152fd5b3461049a57600060031936011261049a5760206001600160a01b0360015416604051908152f35b3461049a57600060031936011261049a576002546001600160a01b0333818316036115ef577fffffffffffffffffffffffff00000000000000000000000000000000000000008092166002556001549133908316176001553391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152fd5b3461049a57600060031936011261049a5761168c611c22565b60006001600160a01b037fffffffffffffffffffffffff00000000000000000000000000000000000000008060025416600255600154908116600155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461049a57604060031936011261049a5767ffffffffffffffff60043581811161049a57611721903690600401611bf1565b9160243590811161049a5761173a903690600401611bf1565b92611743611c22565b801561118c5783810361086c5760005b81811061175c57005b6001600160a01b039081611774610807838689611c94565b1615610fcd576001917f49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e2744176117b16117ac848a89611c94565b611cb8565b91806117c161080786898c611c94565b166000526118046020936005855260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b61181261080785888b611c94565b16916118226117ac858b8a611c94565b6040519015158152a201611753565b3461049a57602060031936011261049a576001600160a01b03611852611bba565b166000526007602052602060ff604060002054166040519015158152f35b3461049a57606060031936011261049a57611889611bba565b604435906001600160a01b039081831680930361049a576118a8611c22565b169081158015611901575b610fcd576118ff91604051917fa9059cbb000000000000000000000000000000000000000000000000000000006020840152602483015260243560448301526044825261030882611ec4565b005b5080156118b3565b3461049a5761191736611b59565b61192360a08201611ca4565b6001600160a01b033391160361199a5761193c81612353565b8060005260066020526040806000205492013591828114610f5c5760407f87b5f0afdc3a118b68246141c5bd338672ab3e901be636e27116238d284de6ac918151908482526020820152a16000526006602052604060002055600080f35b60046040517f4ca88867000000000000000000000000000000000000000000000000000000008152fd5b3461049a57600060031936011261049a5760206001600160a01b0360035416604051908152f35b3461049a57600060031936011261049a576020611a06611d56565b604051908152f35b3461049a57604060031936011261049a57611a27611bba565b602435908115159081830361049a576001600160a01b0390611a47611c22565b16918215610fcd578260005260076020528160ff60406000205416151514611ad7577fcba86444cdc912f5fa5f53c20361b3517933eb181876b3f4a0d47478c6a3039b91611ace602092856000526007845260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b604051908152a2005b60046040517f5b2625c0000000000000000000000000000000000000000000000000000000008152fd5b3461049a57602060031936011261049a5760043567ffffffffffffffff811161049a57611b37610d256020923690600401611b8c565b6040519015158152f35b3461049a576020611a06611b5436611b59565b612353565b6003199060208282011261049a576004359167ffffffffffffffff831161049a57826101e09203011261049a5760040190565b9181601f8401121561049a5782359167ffffffffffffffff831161049a576020838186019501011161049a57565b600435906001600160a01b038216820361049a57565b35906001600160a01b038216820361049a57565b3590811515820361049a57565b9181601f8401121561049a5782359167ffffffffffffffff831161049a576020808501948460051b01011161049a57565b6001600160a01b03600154163303611c3657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b91908110156111435760051b0190565b356001600160a01b038116810361049a5790565b35801515810361049a5790565b91908110156111435760051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe218136030182121561049a570190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561049a570180359067ffffffffffffffff821161049a5760200191813603831361049a57565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016301480611e87575b15611db1577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117611e585760405251902090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b507f00000000000000000000000000000000000000000000000000000000000000004614611d88565b67ffffffffffffffff8111611e5857604052565b6080810190811067ffffffffffffffff821117611e5857604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611e5857604052565b5190811515820361049a57565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b90611fc5906001600160a01b036003541692604093849283518095819482937f3d303c920000000000000000000000000000000000000000000000000000000084528560048501528760248501526044840191611f2e565b03915afa90811561202d576000928392611fed575b505081611fe5575090565b600191501490565b9080939250813d8311612026575b6120058183611ee0565b810103126120235750602061201982611f21565b9101513880611fda565b80fd5b503d611ffb565b82513d6000823e3d90fd5b67ffffffffffffffff8111611e5857601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b92919261207e82612038565b9161208c6040519384611ee0565b82948184528183011161049a578281602093846000960137010152565b9080601f8301121561049a578160206120c493359101612072565b90565b9190916101e090818185031261049a576040519182019067ffffffffffffffff9183811083821117611e58576040528294813584526020820135602085015260408201356040850152606082013560608501526080820135608085015261213060a08301611bd0565b60a085015261214160c08301611bd0565b60c085015261215260e08301611bd0565b60e0850152610100612165818401611bd0565b90850152610120612177818401611bd0565b90850152610140612189818401611be4565b9085015261016080830135908501526101808083013584811161049a57826121b29185016120a9565b908501526101a08083013584811161049a57826121d09185016120a9565b908501526101c0928383013590811161049a576121ed92016120a9565b910152565b919082519283825260005b84811061223c5750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b6020818301810151848301820152016121fd565b906120c4916020815281516020820152602082015160408201526040820151606082015260608201516080820152608082015160a082015260a08201516001600160a01b0380911660c08301528060c08401511660e083015260e0830151816101009116818401528301518161012091168184015283015190610140911681830152820151610160901515818301528201516101809081830152820151906101e06123086101a09382858501526102008401906121f2565b928401516123437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0946101c0928686830301848701526121f2565b94015192828503019101526121f2565b60206123636123969236906120c7565b604051809381927fc3c1f2ec00000000000000000000000000000000000000000000000000000000835260048301612250565b038173fb3e436cafc6723d160d17ff33b38598156ac1025af490811561048e57600091612411575b506123c7611d56565b906040519060208201927f19010000000000000000000000000000000000000000000000000000000000008452602283015260428201526042815261240b81611ec4565b51902090565b906020823d821161243a575b8161242a60209383611ee0565b81010312612023575051386123be565b3d915061241d565b811561244c570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60058110156125e5578061248c5750565b600181036124f25760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152fd5b600281036125585760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152fd5b60031461256157565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9060418151146000146126425761263e916020820151906060604084015193015160001a9061264c565b9091565b5050600090600290565b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083116126cf5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156126c25781516001600160a01b038116156126bc579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b926001600160a01b036120c498969360c0969386521660208501526040840152606083015260808201528160a08201520191611f2e565b6001600160a01b0316308114908115612757575b5061272d57565b60046040517f8a5039c1000000000000000000000000000000000000000000000000000000008152fd5b90501538612726565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561049a57016020813591019167ffffffffffffffff821161049a57813603831361049a57565b90918281527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831161049a5760209260051b809284830137010190565b91906001600160a01b03604051927f23b872dd00000000000000000000000000000000000000000000000000000000602085015216602483015230604483015260648201526064815260a081019181831067ffffffffffffffff841117611e585761285a9260405261285c565b565b6001600160a01b031690604051604081019080821067ffffffffffffffff831117611e58576128ed916040526020938482527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564858301526000808587829751910182855af13d156129a4573d916128d283612038565b926128e06040519485611ee0565b83523d868885013e6129a8565b908151806128fc575b50505050565b828491810103126120235750816129139101611f21565b15612920578080806128f6565b608490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b6060915b91929015612a2357508151156129bc575090565b3b156129c55790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b825190915015612a365750805190602001fd5b612a74906040519182917f08c379a00000000000000000000000000000000000000000000000000000000083526020600484015260248301906121f2565b0390fd5b9160148210612ab0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec6014843560601c9401920190565b60046040517fef356d7a000000000000000000000000000000000000000000000000000000008152fdfea2646970667358221220d87ea5dac76b4fe26365a437e82d4ea8ef37bd102b5e9128b5223f08d0ad7aa864736f6c6343000815003300000000000000000000000041023ee1bb9d3770c7eeb0ce2935e7d766c77e010000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8", + "nonce": "0x8", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xbe4e1fe9aa606e246e1397f5f3ac597e24febd93d68e1c80888b5c4bd798b526", + "transactionType": "CALL", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0x1bE38977300a4077e1d632467782017b452971d8", + "function": "manageOperatorPrivilege(address,bool)", + "arguments": [ + "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "true" + ], + "transaction": { + "type": "0x02", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "to": "0x1be38977300a4077e1d632467782017b452971d8", + "gas": "0x111af", + "value": "0x0", + "data": "0x2024cbc10000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b80000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x9", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionType": "CALL", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0x1bE38977300a4077e1d632467782017b452971d8", + "function": "updateTokenWhitelist(address[],bool[])", + "arguments": [ + "[0x057e8e2bC40ECff87e6F9b28750D5E7AC004Eab9, 0x3cf2c147d43C98Fa96d267572e3FD44A4D3940d4, 0x4B6b9B31c72836806B0B1104Cf1CdAB8A0E3BD66, 0x9Ee1Aa18F3FEB435f811d6AE2F71B7D2a4Adce0B, 0x124ABC63F20c6e2088078bd61e2Db100Ff30836e, 0xecf6Bdde77C77863Ae842b145f9ab296E5eAcAF9, 0x8bA5b0452b0a4da211579AA2e105c3da7C0Ad36c, 0x8488c316e23504B8554e4BdE9651802CD45aea24, 0xeDc98fc6240671dF8e7eD035CE39143320c1A174, 0xeEf8e3c318fb3d86489FB258847d028adC629e14]", + "[true, true, true, true, true, true, true, true, true, true]" + ], + "transaction": { + "type": "0x02", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "to": "0x1be38977300a4077e1d632467782017b452971d8", + "gas": "0x5c4d5", + "value": "0x0", + "data": "0x6fda538f000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000057e8e2bc40ecff87e6f9b28750d5e7ac004eab90000000000000000000000003cf2c147d43c98fa96d267572e3fd44a4d3940d40000000000000000000000004b6b9b31c72836806b0b1104cf1cdab8a0e3bd660000000000000000000000009ee1aa18f3feb435f811d6ae2f71b7d2a4adce0b000000000000000000000000124abc63f20c6e2088078bd61e2db100ff30836e000000000000000000000000ecf6bdde77c77863ae842b145f9ab296e5eacaf90000000000000000000000008ba5b0452b0a4da211579aa2e105c3da7c0ad36c0000000000000000000000008488c316e23504b8554e4bde9651802cd45aea24000000000000000000000000edc98fc6240671df8e7ed035ce39143320c1a174000000000000000000000000eef8e3c318fb3d86489fb258847d028adc629e14000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0xa", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0x84e9a949bd1891141ec9e5c8043ef72b22d519b9cf2e8234c260b07d2206b436", + "transactionIndex": "0x23", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": null, + "cumulativeGasUsed": "0x468d80", + "gasUsed": "0x44a0a", + "contractAddress": "0xfb3E436cAFC6723d160D17fF33b38598156aC102", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0x4b4e47e06" + }, + { + "transactionHash": "0x12ba03167ef5332e85d2bc822a30d73574c7d689fdfd4b90ade6b927c40a8724", + "transactionIndex": "0x24", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": null, + "cumulativeGasUsed": "0x4b10e0", + "gasUsed": "0x48360", + "contractAddress": "0x41023Ee1Bb9d3770c7eeb0Ce2935e7d766c77E01", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0x4b4e47e06" + }, + { + "transactionHash": "0x7d6f5d436a66e3817950f3222c6eb48f591cd50446d90b2b246924bcb5d1a6ce", + "transactionIndex": "0x26", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": null, + "cumulativeGasUsed": "0x75faf4", + "gasUsed": "0x267aee", + "contractAddress": "0x1bE38977300a4077e1d632467782017b452971d8", + "logs": [ + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8" + ], + "data": "0x", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x7d6f5d436a66e3817950f3222c6eb48f591cd50446d90b2b246924bcb5d1a6ce", + "transactionIndex": "0x26", + "logIndex": "0x52", + "removed": false + }, + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed0" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x7d6f5d436a66e3817950f3222c6eb48f591cd50446d90b2b246924bcb5d1a6ce", + "transactionIndex": "0x26", + "logIndex": "0x53", + "removed": false + }, + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x7d6f5d436a66e3817950f3222c6eb48f591cd50446d90b2b246924bcb5d1a6ce", + "transactionIndex": "0x26", + "logIndex": "0x54", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00020000000000000000040000800000000000000010000000800000080000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000001000000000000000000000000000000000000020000000000000000000800000800000000000000000000000000400000000000000000000000000000000000001000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000100000020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0x4b4e47e06" + }, + { + "transactionHash": "0xbe4e1fe9aa606e246e1397f5f3ac597e24febd93d68e1c80888b5c4bd798b526", + "transactionIndex": "0x27", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": "0x1bE38977300a4077e1d632467782017b452971d8", + "cumulativeGasUsed": "0x76b617", + "gasUsed": "0xbb23", + "contractAddress": null, + "logs": [ + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0xcba86444cdc912f5fa5f53c20361b3517933eb181876b3f4a0d47478c6a3039b", + "0x0000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0xbe4e1fe9aa606e246e1397f5f3ac597e24febd93d68e1c80888b5c4bd798b526", + "transactionIndex": "0x27", + "logIndex": "0x55", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x000a0000000000000000040000800000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000100000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0x4b4e47e06" + }, + { + "transactionHash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionIndex": "0x28", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": "0x1bE38977300a4077e1d632467782017b452971d8", + "cumulativeGasUsed": "0x7ae34b", + "gasUsed": "0x42d34", + "contractAddress": null, + "logs": [ + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000057e8e2bc40ecff87e6f9b28750d5e7ac004eab9" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionIndex": "0x28", + "logIndex": "0x56", + "removed": false + }, + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000003cf2c147d43c98fa96d267572e3fd44a4d3940d4" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionIndex": "0x28", + "logIndex": "0x57", + "removed": false + }, + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000004b6b9b31c72836806b0b1104cf1cdab8a0e3bd66" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionIndex": "0x28", + "logIndex": "0x58", + "removed": false + }, + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000009ee1aa18f3feb435f811d6ae2f71b7d2a4adce0b" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionIndex": "0x28", + "logIndex": "0x59", + "removed": false + }, + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000124abc63f20c6e2088078bd61e2db100ff30836e" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionIndex": "0x28", + "logIndex": "0x5a", + "removed": false + }, + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000ecf6bdde77c77863ae842b145f9ab296e5eacaf9" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionIndex": "0x28", + "logIndex": "0x5b", + "removed": false + }, + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000008ba5b0452b0a4da211579aa2e105c3da7c0ad36c" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionIndex": "0x28", + "logIndex": "0x5c", + "removed": false + }, + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000008488c316e23504b8554e4bde9651802cd45aea24" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionIndex": "0x28", + "logIndex": "0x5d", + "removed": false + }, + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000edc98fc6240671df8e7ed035ce39143320c1a174" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionIndex": "0x28", + "logIndex": "0x5e", + "removed": false + }, + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000eef8e3c318fb3d86489fb258847d028adc629e14" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionIndex": "0x28", + "logIndex": "0x5f", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00020002100000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000020000000000008000000000000000000000000000000110000000000000000000000000000000000000800000002000020000001000010020000000000000000000000000000000000000200002001000800000000020002000000000000000000000000000000000000040000000000000080000020000000000000000000000000080000000800000000000000008000000000400004040000000001000000000000000800000100800000000000000000000000000000000000000800000000000000002000000000000000", + "type": "0x2", + "effectiveGasPrice": "0x4b4e47e06" + } + ], + "libraries": [ + "src/libraries/OrderEngine.sol:OrderEngine:0xfb3e436cafc6723d160d17ff33b38598156ac102" + ], + "pending": [], + "returns": {}, + "timestamp": 1703142631, + "chain": 11155111, + "multi": false, + "commit": "951d56e" +} \ No newline at end of file diff --git a/broadcast/deployOrderEngine.s.sol/11155111/run-1703142685.json b/broadcast/deployOrderEngine.s.sol/11155111/run-1703142685.json new file mode 100644 index 0000000..2cd0e14 --- /dev/null +++ b/broadcast/deployOrderEngine.s.sol/11155111/run-1703142685.json @@ -0,0 +1,398 @@ +{ + "transactions": [ + { + "hash": "0x84e9a949bd1891141ec9e5c8043ef72b22d519b9cf2e8234c260b07d2206b436", + "transactionType": "CREATE", + "contractName": "OrderEngine", + "contractAddress": "0xfb3E436cAFC6723d160D17fF33b38598156aC102", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "gas": "0x59318", + "data": "0x6080806040523461001a576104219081610020823930815050f35b600080fdfe608080604052600436101561001357600080fd5b600090813560e01c90816395de97cc1461026557508063b91611f41461020e5763c3c1f2ec1461004257600080fd5b61004b36610283565b61005760a082016102d9565b9061006460c082016102d9565b9161007160e083016102d9565b9161007f61010082016102d9565b9061008d61012082016102d9565b90610140810135801515810361020a57610100610160936020986100bf6100b86101808701876102fa565b369161034b565b8a8151910120966100d76100b86101a08801886102fa565b8b8151910120986100ef6100b86101c08901896102fa565b8c81519101209a7f405c8d592eac87d960001fca48881b9679b0f000df8f68c6cef96559a6738fad6040519d8e01528c604089359101528c606060208a01359101528c608060408a01359101528c60a060608a01359101528c60c060808a01359101528c73ffffffffffffffffffffffffffffffffffffffff968780968180961660e085015216910152166101208c0152166101408a01521683880152151561018087015201356101a08501526101c08401526101e08301526102009081830152815261022081019080821067ffffffffffffffff8311176101dd5760209250816040528281519101208152f35b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8780fd5b50807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102625760206040517f405c8d592eac87d960001fca48881b9679b0f000df8f68c6cef96559a6738fad8152f35b80fd5b60209061027c60a061027636610283565b016102d9565b3b15158152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc906020828201126102d4576004359167ffffffffffffffff83116102d457826101e0920301126102d45760040190565b600080fd5b3573ffffffffffffffffffffffffffffffffffffffff811681036102d45790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102d4570180359067ffffffffffffffff82116102d4576020019181360383136102d457565b92919267ffffffffffffffff918281116103bc5760405192601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168401908111848210176103bc576040528294818452818301116102d4578281602093846000960137010152565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220fcf2e71d4fed2f596a1a465e75f3db24ccadee7f0fcc77fdb4822408a1d6c59964736f6c63430008150033", + "nonce": "0x6", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x12ba03167ef5332e85d2bc822a30d73574c7d689fdfd4b90ade6b927c40a8724", + "transactionType": "CREATE", + "contractName": "Predicates", + "contractAddress": "0x41023Ee1Bb9d3770c7eeb0Ce2935e7d766c77E01", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "gas": "0x5dd9f", + "value": "0x0", + "data": "0x6080806040523461001657610464908161001c8239f35b600080fdfe604060808152600436101561001357600080fd5b6000803560e01c80633d303c92146102265780634f38e2b8146101f55780636fe7b0ba146101c457806374261145146101a8578063bf15fcd814610157578063bf797959146100dd578063bfa75143146100b45763ca4ece221461007657600080fd5b346100b15760206100948361008a366102e9565b9093919330610408565b819391936100a7575b5050519015158152f35b109150838061009d565b80fd5b5090346100d9576020906100d06100ca366102e9565b916103a8565b90519015158152f35b5080fd5b5090346100d95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d9576004359167ffffffffffffffff83116100b1575061013c6101356020933690600401610247565b9030610408565b8192919261014e575b50519015158152f35b15915038610145565b50346100b1575061017061016a3661027a565b91610408565b901561017f5760209151908152f35b600482517f1f1b8f61000000000000000000000000000000000000000000000000000000008152fd5b5090346100d9576020906100d06101be366102e9565b9161034f565b50346100b15760206101d98361008a366102e9565b819391936101eb575050519015158152f35b149150838061009d565b50346100b157602061020a8361008a366102e9565b8193919361021c575050519015158152f35b119150838061009d565b50346100b1575061023961016a3661027a565b825191151582526020820152f35b9181601f840112156102755782359167ffffffffffffffff8311610275576020838186019501011161027557565b600080fd5b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126102755760043573ffffffffffffffffffffffffffffffffffffffff8116810361027557916024359067ffffffffffffffff8211610275576102e591600401610247565b9091565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261027557600435916024359067ffffffffffffffff8211610275576102e591600401610247565b90939293848311610275578411610275578101920390565b9290919260005b63ffffffff821690811561039d5761013582610373928888610337565b81610392575b50610388579060201c90610356565b5050915050600190565b600191501438610379565b505050915050600090565b92909192600090815b63ffffffff82169081156103fc57610135826103ce928989610337565b90159081156103f0575b506103e7579060201c906103b1565b50509150915090565b600191501415386103d8565b50505050915050600190565b916000906020928294826040519283375afa60203d1416918261042757565b600051915056fea26469706673582212200458f875fadeeb52c1e054aa965d8292bed98c8059d7cbdeadebad7fe2b4b8e364736f6c63430008150033", + "nonce": "0x7", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x7d6f5d436a66e3817950f3222c6eb48f591cd50446d90b2b246924bcb5d1a6ce", + "transactionType": "CREATE", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0x1bE38977300a4077e1d632467782017b452971d8", + "function": null, + "arguments": [ + "0x41023Ee1Bb9d3770c7eeb0Ce2935e7d766c77E01", + "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8" + ], + "transaction": { + "type": "0x02", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "gas": "0x320276", + "value": "0x0", + "data": "0x61014034620002a6576001600160401b0362002dd8601f38829003908101601f191684019083821185831017620002905780859160409485948552833981010312620002a65782516001600160a01b039384821691829003620002a6576020015190848216808303620002a6578351906200007a82620002ab565b601d825260208201957f456c656b7472696b204c696d6974204f726465722050726f746f636f6c0000008752600260208751620000b781620002ab565b828152019761763160f01b8952600160005560018060a01b031994858354168355600154338782161760015589519b3391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a351902097208760e05261010098818a524660a05260208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f998a84528983015260608201524660808201523060a082015260a0815260c08101928184109084111762000290578288525190206080523060c0526101209687528315801562000287575b620002785750600480548316919091179055600380549091169190911790558151600081526001600160a01b03821660208201527f1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc9162000234917f649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed090604090a18351600081526001600160a01b0390911660208201529081906040820190565b0390a15190612b109283620002c8843960805183611d8f015260a05183611e8a015260c05183611d60015260e05183611dde01525182611e0401525181611dbb0152f35b63d92e233d60e01b8152600490fd5b50811562000193565b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620002905760405256fe610180604052600436101561001357600080fd5b60003560e01c80630610f4a714611b4157806315169dec14611b015780632024cbc114611a0e5780633644e515146119eb5780633c3efab4146119c45780635f2a64511461190957806369328dec146118705780636d70f7ae146118315780636fda538f146116ef578063715018a61461167357806379ba50971461156d5780638da5cb5b146115465780638efede3d1461147457806390d6e14c146113a2578063ab37f48614611363578063c2ee3a0814611340578063c415b95c14611319578063cf0f969d146112ed578063e30c3978146112c6578063f2fde38b146112445763fe61e35c1461010457600080fd5b3461049a5760e060031936011261049a5767ffffffffffffffff60043581811161049a57610136903690600401611bf1565b610120526101605260243581811161049a57610156903690600401611bf1565b60e0526101405260443581811161049a57610175903690600401611bf1565b60c0526101005260643581811161049a57610194903690600401611bf1565b60843583811161049a576101ac903690600401611b8c565b919060a43585811161049a576101c6903690600401611bf1565b93909560c43590811161049a576101e1903690600401611bf1565b93909533600052600760205260ff6040600020541615611214576002600054146111b6576002600055610120511561118c5760e051610120511480159061117e575b8015611172575b61086c5760005b61012051811061089657505050601481101561049f575b50505050505060005b610120518110610262576001600055005b610273816101205161016051611cc5565b906102848160e05161014051611c94565b356102958260c05161010051611c94565b3561029f84612353565b9361030d6102b06101208301611ca4565b6102bc60e08401611ca4565b906001600160a01b03604051927fa9059cbb0000000000000000000000000000000000000000000000000000000060208501521660248301528460448301526044825261030882611ec4565b61285c565b846000526006602052604060002054906101c08101601461032e8284611d05565b905010156103ba575b506001957f2b15903b1f1516345ba547119efb6a90ccb8012f1803cc933c0a28b9291a5fef92826001600160a01b0361037561010060c09601611ca4565b16956001600160a01b0361038c6101208401611ca4565b1697608093604051958652602086015260408501526060840152803582840152013560a0820152a301610251565b956103d76103d183986001600160a01b0394611d05565b90612a78565b916103e481959295612712565b166103f160a08a01611ca4565b90803b1561049a57876000889361043c82968a996040519b8c98899788967fb6e1471a0000000000000000000000000000000000000000000000000000000088528d600489016126db565b03925af191821561048e576001977f2b15903b1f1516345ba547119efb6a90ccb8012f1803cc933c0a28b9291a5fef9460c09461047f575b509250925095610337565b61048890611eb0565b38610474565b6040513d6000823e3d90fd5b600080fd5b6104a891612a78565b90949160805293926104bb608051612712565b82810361086c5760005b8181106107f357506001600160a01b03608051163b1561049a5760405160a0527f2499e3a20000000000000000000000000000000000000000000000000000000060a0515260c460a0510160c0600460a051015261012051905260e460a0510160e46101205160051b60a051010190610160519060005b61012051811061064b5750505061058a61056e60209260031960a051820301602460a051015260e051610140516127b0565b60031960a051820301604460a051015260c051610100516127b0565b60031960a051820301606460a051015282815201959060005b818110610623575050506000946105ea926105cd9260031960a051840301608460a05101526127b0565b60031960a05182030160a460a051015260a0519360a05193611f2e565b0360a051836001600160a01b03608051165af1801561048e57610613575b388080808080610248565b61061e60a051611eb0565b610608565b9091966020806001926001600160a01b0361063d8c611bd0565b1681520198019291016105a3565b9091927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c60a051820301835283357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe216101605136030181121561049a5760206107e860019382936101605101906107c96107ad6101e084358452868501358785015260408501356040850152606080860135908501526080808601359085015260a06001600160a01b03610700828801611bd0565b16908501526001600160a01b0361071960c08701611bd0565b1660c08501526001600160a01b0361073360e08701611bd0565b1660e08501526101006001600160a01b0361074f828801611bd0565b16908501526101206001600160a01b0361076a828801611bd0565b169085015261014061077d818701611be4565b1515908501526101608086013590850152610180908061079f83880188612760565b929093870152850191611f2e565b6101a06107bc81860186612760565b9185840390860152611f2e565b916107da6101c09182810190612760565b929091818503910152611f2e565b95019301910161053c565b8061086661080c610807600194868c611c94565b611ca4565b610817838888611c94565b3590604051917fa9059cbb0000000000000000000000000000000000000000000000000000000060208401526001600160a01b0360805116602484015260448301526044825261030882611ec4565b016104c5565b60046040517ffc235960000000000000000000000000000000000000000000000000000000008152fd5b6108a7816101205161016051611cc5565b906108b88160e05161014051611c94565b35916108ca8260c05161010051611c94565b359285831015611143576108e38360051b860186611d05565b9180916108ef85612353565b916020860135421161111257606086013515908115611105575b81156110fc575b5080156110f4575b6110ca576001600160a01b036109316101208701611ca4565b16600052600560205260ff604060002054161580156110a1575b6110775761095c6101008601611ca4565b6001600160a01b03806109726101208901611ca4565b1691161461104d576001600160a01b0361098e60a08701611ca4565b16158015611030575b8015611013575b8015610ff7575b610fcd5760c085016001600160a01b036109be82611ca4565b1615159081610fb0575b50610f8657816000526006602052604060002054604086013514610f5c576109f36101408601611cb8565b15610f2a57670de0b6b3a7640000808402848104821485151715610ed15788610a1b91612442565b906040870135808202918115918304141715610ed157610a4090606088013590612442565b10610f00578160005260066020526040600020805490848201809211610ed1575560808501358084810204841481151715610ed157610a86908460408801359102612442565b826000526006602052604086013560406000205411610ea757935b610ae36020610ab036896120c7565b604051809381927f95de97cc00000000000000000000000000000000000000000000000000000000835260048301612250565b038173fb3e436cafc6723d160d17ff33b38598156ac1025af490811561048e57600091610e6d575b5015610e0557610b71916020916001600160a01b03610b2c60a08a01611ca4565b16906040518095819482937f1626ba7e000000000000000000000000000000000000000000000000000000008452896004850152604060248501526044840191611f2e565b03915afa90811561048e57600091610d8a575b507fffffffff000000000000000000000000000000000000000000000000000000007f1626ba7e00000000000000000000000000000000000000000000000000000000911603610d60575b6101808401610bde8186611d05565b9050610d18575b506101a084016014610bf78287611d05565b90501015610c62575b505060019450610c2a90610c176101008501611ca4565b90610c2460a08601611ca4565b916127ed565b80610c38575b505001610231565b610c48610100610c5b9301611ca4565b906001600160a01b0360045416916127ed565b3880610c30565b610c776103d16001600160a01b039287611d05565b929091610c8381612712565b1690610c9160a08801611ca4565b9084600052600660205260406000205494833b1561049a57610cea87956000979388946040519e8f998a9889977f1ad047d2000000000000000000000000000000000000000000000000000000008952600489016126db565b03925af190811561048e57600195610c2a92610d09575b819250610c00565b610d1290611eb0565b38610d01565b610d25610d2b9186611d05565b90611f6d565b15610d365738610be5565b60046040517fb6629c02000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b90506020813d602011610dfd575b81610da560209383611ee0565b8101031261049a57517fffffffff000000000000000000000000000000000000000000000000000000008116810361049a577fffffffff00000000000000000000000000000000000000000000000000000000610b84565b3d9150610d98565b610e17610e2592610e1d923691612072565b83612614565b91909161247b565b6001600160a01b0380610e3a60a08801611ca4565b1691160315610bcf5760046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b90506020813d602011610e9f575b81610e8860209383611ee0565b8101031261049a57610e9990611f21565b38610b0b565b3d9150610e7b565b60046040517f17015bc1000000000000000000000000000000000000000000000000000000008152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60046040517fa0de07d3000000000000000000000000000000000000000000000000000000008152fd5b915085606085013511610f00576040840135916080850135938260005260066020526040860135604060002055610aa1565b60046040517fca92fdbb000000000000000000000000000000000000000000000000000000008152fd5b60046040517fd4dfdafe000000000000000000000000000000000000000000000000000000008152fd5b90506001600160a01b03610fc43392611ca4565b161415386109c8565b60046040517fd92e233d000000000000000000000000000000000000000000000000000000008152fd5b506001600160a01b0361100c60e08701611ca4565b16156109a5565b506001600160a01b036110296101008701611ca4565b161561099e565b506001600160a01b036110466101208701611ca4565b1615610997565b60046040517fdd807227000000000000000000000000000000000000000000000000000000008152fd5b60046040517ff84835a0000000000000000000000000000000000000000000000000000000008152fd5b506001600160a01b036110b76101008701611ca4565b1660005260ff604060002054161561094b565b60046040517f1f2a2005000000000000000000000000000000000000000000000000000000008152fd5b508615610918565b90501538610910565b6040870135159150610909565b602483604051907f2e775cae0000000000000000000000000000000000000000000000000000000082526004820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b508160c051141561022a565b5060c05160e0511415610223565b60046040517f521299a9000000000000000000000000000000000000000000000000000000008152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b60246040517fc0ae66ad000000000000000000000000000000000000000000000000000000008152336004820152fd5b3461049a57602060031936011261049a5761125d611bba565b611265611c22565b6001600160a01b0380911690817fffffffffffffffffffffffff00000000000000000000000000000000000000006002541617600255600154167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700600080a3005b3461049a57600060031936011261049a5760206001600160a01b0360025416604051908152f35b3461049a57602060031936011261049a5760043560005260066020526020604060002054604051908152f35b3461049a57600060031936011261049a5760206001600160a01b0360045416604051908152f35b3461049a57600060031936011261049a576020604051670de0b6b3a76400008152f35b3461049a57602060031936011261049a576001600160a01b03611384611bba565b166000526005602052602060ff604060002054166040519015158152f35b3461049a57602060031936011261049a576004356001600160a01b0380821680920361049a576113d0611c22565b8115610fcd576003549081169082821461144a57604080516001600160a01b03938416815292841660208401527fffffffffffffffffffffffff0000000000000000000000000000000000000000927f1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc9190a11617600355005b60046040517fea0f8928000000000000000000000000000000000000000000000000000000008152fd5b3461049a57602060031936011261049a5761148d611bba565b611495611c22565b6001600160a01b0390818116918215610fcd5760045490811683811461151c57604080516001600160a01b0392831681529390911660208401527fffffffffffffffffffffffff0000000000000000000000000000000000000000927f649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed09190a11617600455005b60046040517fa133328a000000000000000000000000000000000000000000000000000000008152fd5b3461049a57600060031936011261049a5760206001600160a01b0360015416604051908152f35b3461049a57600060031936011261049a576002546001600160a01b0333818316036115ef577fffffffffffffffffffffffff00000000000000000000000000000000000000008092166002556001549133908316176001553391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152fd5b3461049a57600060031936011261049a5761168c611c22565b60006001600160a01b037fffffffffffffffffffffffff00000000000000000000000000000000000000008060025416600255600154908116600155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461049a57604060031936011261049a5767ffffffffffffffff60043581811161049a57611721903690600401611bf1565b9160243590811161049a5761173a903690600401611bf1565b92611743611c22565b801561118c5783810361086c5760005b81811061175c57005b6001600160a01b039081611774610807838689611c94565b1615610fcd576001917f49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e2744176117b16117ac848a89611c94565b611cb8565b91806117c161080786898c611c94565b166000526118046020936005855260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b61181261080785888b611c94565b16916118226117ac858b8a611c94565b6040519015158152a201611753565b3461049a57602060031936011261049a576001600160a01b03611852611bba565b166000526007602052602060ff604060002054166040519015158152f35b3461049a57606060031936011261049a57611889611bba565b604435906001600160a01b039081831680930361049a576118a8611c22565b169081158015611901575b610fcd576118ff91604051917fa9059cbb000000000000000000000000000000000000000000000000000000006020840152602483015260243560448301526044825261030882611ec4565b005b5080156118b3565b3461049a5761191736611b59565b61192360a08201611ca4565b6001600160a01b033391160361199a5761193c81612353565b8060005260066020526040806000205492013591828114610f5c5760407f87b5f0afdc3a118b68246141c5bd338672ab3e901be636e27116238d284de6ac918151908482526020820152a16000526006602052604060002055600080f35b60046040517f4ca88867000000000000000000000000000000000000000000000000000000008152fd5b3461049a57600060031936011261049a5760206001600160a01b0360035416604051908152f35b3461049a57600060031936011261049a576020611a06611d56565b604051908152f35b3461049a57604060031936011261049a57611a27611bba565b602435908115159081830361049a576001600160a01b0390611a47611c22565b16918215610fcd578260005260076020528160ff60406000205416151514611ad7577fcba86444cdc912f5fa5f53c20361b3517933eb181876b3f4a0d47478c6a3039b91611ace602092856000526007845260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b604051908152a2005b60046040517f5b2625c0000000000000000000000000000000000000000000000000000000008152fd5b3461049a57602060031936011261049a5760043567ffffffffffffffff811161049a57611b37610d256020923690600401611b8c565b6040519015158152f35b3461049a576020611a06611b5436611b59565b612353565b6003199060208282011261049a576004359167ffffffffffffffff831161049a57826101e09203011261049a5760040190565b9181601f8401121561049a5782359167ffffffffffffffff831161049a576020838186019501011161049a57565b600435906001600160a01b038216820361049a57565b35906001600160a01b038216820361049a57565b3590811515820361049a57565b9181601f8401121561049a5782359167ffffffffffffffff831161049a576020808501948460051b01011161049a57565b6001600160a01b03600154163303611c3657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b91908110156111435760051b0190565b356001600160a01b038116810361049a5790565b35801515810361049a5790565b91908110156111435760051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe218136030182121561049a570190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561049a570180359067ffffffffffffffff821161049a5760200191813603831361049a57565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016301480611e87575b15611db1577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117611e585760405251902090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b507f00000000000000000000000000000000000000000000000000000000000000004614611d88565b67ffffffffffffffff8111611e5857604052565b6080810190811067ffffffffffffffff821117611e5857604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611e5857604052565b5190811515820361049a57565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b90611fc5906001600160a01b036003541692604093849283518095819482937f3d303c920000000000000000000000000000000000000000000000000000000084528560048501528760248501526044840191611f2e565b03915afa90811561202d576000928392611fed575b505081611fe5575090565b600191501490565b9080939250813d8311612026575b6120058183611ee0565b810103126120235750602061201982611f21565b9101513880611fda565b80fd5b503d611ffb565b82513d6000823e3d90fd5b67ffffffffffffffff8111611e5857601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b92919261207e82612038565b9161208c6040519384611ee0565b82948184528183011161049a578281602093846000960137010152565b9080601f8301121561049a578160206120c493359101612072565b90565b9190916101e090818185031261049a576040519182019067ffffffffffffffff9183811083821117611e58576040528294813584526020820135602085015260408201356040850152606082013560608501526080820135608085015261213060a08301611bd0565b60a085015261214160c08301611bd0565b60c085015261215260e08301611bd0565b60e0850152610100612165818401611bd0565b90850152610120612177818401611bd0565b90850152610140612189818401611be4565b9085015261016080830135908501526101808083013584811161049a57826121b29185016120a9565b908501526101a08083013584811161049a57826121d09185016120a9565b908501526101c0928383013590811161049a576121ed92016120a9565b910152565b919082519283825260005b84811061223c5750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b6020818301810151848301820152016121fd565b906120c4916020815281516020820152602082015160408201526040820151606082015260608201516080820152608082015160a082015260a08201516001600160a01b0380911660c08301528060c08401511660e083015260e0830151816101009116818401528301518161012091168184015283015190610140911681830152820151610160901515818301528201516101809081830152820151906101e06123086101a09382858501526102008401906121f2565b928401516123437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0946101c0928686830301848701526121f2565b94015192828503019101526121f2565b60206123636123969236906120c7565b604051809381927fc3c1f2ec00000000000000000000000000000000000000000000000000000000835260048301612250565b038173fb3e436cafc6723d160d17ff33b38598156ac1025af490811561048e57600091612411575b506123c7611d56565b906040519060208201927f19010000000000000000000000000000000000000000000000000000000000008452602283015260428201526042815261240b81611ec4565b51902090565b906020823d821161243a575b8161242a60209383611ee0565b81010312612023575051386123be565b3d915061241d565b811561244c570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60058110156125e5578061248c5750565b600181036124f25760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152fd5b600281036125585760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152fd5b60031461256157565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9060418151146000146126425761263e916020820151906060604084015193015160001a9061264c565b9091565b5050600090600290565b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083116126cf5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156126c25781516001600160a01b038116156126bc579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b926001600160a01b036120c498969360c0969386521660208501526040840152606083015260808201528160a08201520191611f2e565b6001600160a01b0316308114908115612757575b5061272d57565b60046040517f8a5039c1000000000000000000000000000000000000000000000000000000008152fd5b90501538612726565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561049a57016020813591019167ffffffffffffffff821161049a57813603831361049a57565b90918281527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831161049a5760209260051b809284830137010190565b91906001600160a01b03604051927f23b872dd00000000000000000000000000000000000000000000000000000000602085015216602483015230604483015260648201526064815260a081019181831067ffffffffffffffff841117611e585761285a9260405261285c565b565b6001600160a01b031690604051604081019080821067ffffffffffffffff831117611e58576128ed916040526020938482527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564858301526000808587829751910182855af13d156129a4573d916128d283612038565b926128e06040519485611ee0565b83523d868885013e6129a8565b908151806128fc575b50505050565b828491810103126120235750816129139101611f21565b15612920578080806128f6565b608490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b6060915b91929015612a2357508151156129bc575090565b3b156129c55790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b825190915015612a365750805190602001fd5b612a74906040519182917f08c379a00000000000000000000000000000000000000000000000000000000083526020600484015260248301906121f2565b0390fd5b9160148210612ab0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec6014843560601c9401920190565b60046040517fef356d7a000000000000000000000000000000000000000000000000000000008152fdfea2646970667358221220d87ea5dac76b4fe26365a437e82d4ea8ef37bd102b5e9128b5223f08d0ad7aa864736f6c6343000815003300000000000000000000000041023ee1bb9d3770c7eeb0ce2935e7d766c77e010000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8", + "nonce": "0x8", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xbe4e1fe9aa606e246e1397f5f3ac597e24febd93d68e1c80888b5c4bd798b526", + "transactionType": "CALL", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0x1bE38977300a4077e1d632467782017b452971d8", + "function": "manageOperatorPrivilege(address,bool)", + "arguments": [ + "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "true" + ], + "transaction": { + "type": "0x02", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "to": "0x1be38977300a4077e1d632467782017b452971d8", + "gas": "0x111af", + "value": "0x0", + "data": "0x2024cbc10000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b80000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x9", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionType": "CALL", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0x1bE38977300a4077e1d632467782017b452971d8", + "function": "updateTokenWhitelist(address[],bool[])", + "arguments": [ + "[0x057e8e2bC40ECff87e6F9b28750D5E7AC004Eab9, 0x3cf2c147d43C98Fa96d267572e3FD44A4D3940d4, 0x4B6b9B31c72836806B0B1104Cf1CdAB8A0E3BD66, 0x9Ee1Aa18F3FEB435f811d6AE2F71B7D2a4Adce0B, 0x124ABC63F20c6e2088078bd61e2Db100Ff30836e, 0xecf6Bdde77C77863Ae842b145f9ab296E5eAcAF9, 0x8bA5b0452b0a4da211579AA2e105c3da7C0Ad36c, 0x8488c316e23504B8554e4BdE9651802CD45aea24, 0xeDc98fc6240671dF8e7eD035CE39143320c1A174, 0xeEf8e3c318fb3d86489FB258847d028adC629e14]", + "[true, true, true, true, true, true, true, true, true, true]" + ], + "transaction": { + "type": "0x02", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "to": "0x1be38977300a4077e1d632467782017b452971d8", + "gas": "0x5c4d5", + "value": "0x0", + "data": "0x6fda538f000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000057e8e2bc40ecff87e6f9b28750d5e7ac004eab90000000000000000000000003cf2c147d43c98fa96d267572e3fd44a4d3940d40000000000000000000000004b6b9b31c72836806b0b1104cf1cdab8a0e3bd660000000000000000000000009ee1aa18f3feb435f811d6ae2f71b7d2a4adce0b000000000000000000000000124abc63f20c6e2088078bd61e2db100ff30836e000000000000000000000000ecf6bdde77c77863ae842b145f9ab296e5eacaf90000000000000000000000008ba5b0452b0a4da211579aa2e105c3da7c0ad36c0000000000000000000000008488c316e23504b8554e4bde9651802cd45aea24000000000000000000000000edc98fc6240671df8e7ed035ce39143320c1a174000000000000000000000000eef8e3c318fb3d86489fb258847d028adc629e14000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0xa", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0x84e9a949bd1891141ec9e5c8043ef72b22d519b9cf2e8234c260b07d2206b436", + "transactionIndex": "0x23", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": null, + "cumulativeGasUsed": "0x468d80", + "gasUsed": "0x44a0a", + "contractAddress": "0xfb3E436cAFC6723d160D17fF33b38598156aC102", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0x4b4e47e06" + }, + { + "transactionHash": "0x12ba03167ef5332e85d2bc822a30d73574c7d689fdfd4b90ade6b927c40a8724", + "transactionIndex": "0x24", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": null, + "cumulativeGasUsed": "0x4b10e0", + "gasUsed": "0x48360", + "contractAddress": "0x41023Ee1Bb9d3770c7eeb0Ce2935e7d766c77E01", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0x4b4e47e06" + }, + { + "transactionHash": "0x7d6f5d436a66e3817950f3222c6eb48f591cd50446d90b2b246924bcb5d1a6ce", + "transactionIndex": "0x26", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": null, + "cumulativeGasUsed": "0x75faf4", + "gasUsed": "0x267aee", + "contractAddress": "0x1bE38977300a4077e1d632467782017b452971d8", + "logs": [ + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8" + ], + "data": "0x", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x7d6f5d436a66e3817950f3222c6eb48f591cd50446d90b2b246924bcb5d1a6ce", + "transactionIndex": "0x26", + "logIndex": "0x52", + "removed": false + }, + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed0" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x7d6f5d436a66e3817950f3222c6eb48f591cd50446d90b2b246924bcb5d1a6ce", + "transactionIndex": "0x26", + "logIndex": "0x53", + "removed": false + }, + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x7d6f5d436a66e3817950f3222c6eb48f591cd50446d90b2b246924bcb5d1a6ce", + "transactionIndex": "0x26", + "logIndex": "0x54", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00020000000000000000040000800000000000000010000000800000080000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000001000000000000000000000000000000000000020000000000000000000800000800000000000000000000000000400000000000000000000000000000000000001000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000100000020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0x4b4e47e06" + }, + { + "transactionHash": "0xbe4e1fe9aa606e246e1397f5f3ac597e24febd93d68e1c80888b5c4bd798b526", + "transactionIndex": "0x27", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": "0x1bE38977300a4077e1d632467782017b452971d8", + "cumulativeGasUsed": "0x76b617", + "gasUsed": "0xbb23", + "contractAddress": null, + "logs": [ + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0xcba86444cdc912f5fa5f53c20361b3517933eb181876b3f4a0d47478c6a3039b", + "0x0000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0xbe4e1fe9aa606e246e1397f5f3ac597e24febd93d68e1c80888b5c4bd798b526", + "transactionIndex": "0x27", + "logIndex": "0x55", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x000a0000000000000000040000800000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000100000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0x4b4e47e06" + }, + { + "transactionHash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionIndex": "0x28", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": "0x1bE38977300a4077e1d632467782017b452971d8", + "cumulativeGasUsed": "0x7ae34b", + "gasUsed": "0x42d34", + "contractAddress": null, + "logs": [ + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000057e8e2bc40ecff87e6f9b28750d5e7ac004eab9" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionIndex": "0x28", + "logIndex": "0x56", + "removed": false + }, + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000003cf2c147d43c98fa96d267572e3fd44a4d3940d4" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionIndex": "0x28", + "logIndex": "0x57", + "removed": false + }, + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000004b6b9b31c72836806b0b1104cf1cdab8a0e3bd66" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionIndex": "0x28", + "logIndex": "0x58", + "removed": false + }, + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000009ee1aa18f3feb435f811d6ae2f71b7d2a4adce0b" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionIndex": "0x28", + "logIndex": "0x59", + "removed": false + }, + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000124abc63f20c6e2088078bd61e2db100ff30836e" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionIndex": "0x28", + "logIndex": "0x5a", + "removed": false + }, + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000ecf6bdde77c77863ae842b145f9ab296e5eacaf9" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionIndex": "0x28", + "logIndex": "0x5b", + "removed": false + }, + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000008ba5b0452b0a4da211579aa2e105c3da7c0ad36c" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionIndex": "0x28", + "logIndex": "0x5c", + "removed": false + }, + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000008488c316e23504b8554e4bde9651802cd45aea24" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionIndex": "0x28", + "logIndex": "0x5d", + "removed": false + }, + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000edc98fc6240671df8e7ed035ce39143320c1a174" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionIndex": "0x28", + "logIndex": "0x5e", + "removed": false + }, + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000eef8e3c318fb3d86489fb258847d028adc629e14" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionIndex": "0x28", + "logIndex": "0x5f", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00020002100000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000020000000000008000000000000000000000000000000110000000000000000000000000000000000000800000002000020000001000010020000000000000000000000000000000000000200002001000800000000020002000000000000000000000000000000000000040000000000000080000020000000000000000000000000080000000800000000000000008000000000400004040000000001000000000000000800000100800000000000000000000000000000000000000800000000000000002000000000000000", + "type": "0x2", + "effectiveGasPrice": "0x4b4e47e06" + } + ], + "libraries": [ + "src/libraries/OrderEngine.sol:OrderEngine:0xfb3e436cafc6723d160d17ff33b38598156ac102" + ], + "pending": [], + "returns": {}, + "timestamp": 1703142685, + "chain": 11155111, + "multi": false, + "commit": "951d56e" +} \ No newline at end of file diff --git a/broadcast/deployOrderEngine.s.sol/11155111/run-latest.json b/broadcast/deployOrderEngine.s.sol/11155111/run-latest.json new file mode 100644 index 0000000..2cd0e14 --- /dev/null +++ b/broadcast/deployOrderEngine.s.sol/11155111/run-latest.json @@ -0,0 +1,398 @@ +{ + "transactions": [ + { + "hash": "0x84e9a949bd1891141ec9e5c8043ef72b22d519b9cf2e8234c260b07d2206b436", + "transactionType": "CREATE", + "contractName": "OrderEngine", + "contractAddress": "0xfb3E436cAFC6723d160D17fF33b38598156aC102", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "gas": "0x59318", + "data": "0x6080806040523461001a576104219081610020823930815050f35b600080fdfe608080604052600436101561001357600080fd5b600090813560e01c90816395de97cc1461026557508063b91611f41461020e5763c3c1f2ec1461004257600080fd5b61004b36610283565b61005760a082016102d9565b9061006460c082016102d9565b9161007160e083016102d9565b9161007f61010082016102d9565b9061008d61012082016102d9565b90610140810135801515810361020a57610100610160936020986100bf6100b86101808701876102fa565b369161034b565b8a8151910120966100d76100b86101a08801886102fa565b8b8151910120986100ef6100b86101c08901896102fa565b8c81519101209a7f405c8d592eac87d960001fca48881b9679b0f000df8f68c6cef96559a6738fad6040519d8e01528c604089359101528c606060208a01359101528c608060408a01359101528c60a060608a01359101528c60c060808a01359101528c73ffffffffffffffffffffffffffffffffffffffff968780968180961660e085015216910152166101208c0152166101408a01521683880152151561018087015201356101a08501526101c08401526101e08301526102009081830152815261022081019080821067ffffffffffffffff8311176101dd5760209250816040528281519101208152f35b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8780fd5b50807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102625760206040517f405c8d592eac87d960001fca48881b9679b0f000df8f68c6cef96559a6738fad8152f35b80fd5b60209061027c60a061027636610283565b016102d9565b3b15158152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc906020828201126102d4576004359167ffffffffffffffff83116102d457826101e0920301126102d45760040190565b600080fd5b3573ffffffffffffffffffffffffffffffffffffffff811681036102d45790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102d4570180359067ffffffffffffffff82116102d4576020019181360383136102d457565b92919267ffffffffffffffff918281116103bc5760405192601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168401908111848210176103bc576040528294818452818301116102d4578281602093846000960137010152565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220fcf2e71d4fed2f596a1a465e75f3db24ccadee7f0fcc77fdb4822408a1d6c59964736f6c63430008150033", + "nonce": "0x6", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x12ba03167ef5332e85d2bc822a30d73574c7d689fdfd4b90ade6b927c40a8724", + "transactionType": "CREATE", + "contractName": "Predicates", + "contractAddress": "0x41023Ee1Bb9d3770c7eeb0Ce2935e7d766c77E01", + "function": null, + "arguments": null, + "transaction": { + "type": "0x02", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "gas": "0x5dd9f", + "value": "0x0", + "data": "0x6080806040523461001657610464908161001c8239f35b600080fdfe604060808152600436101561001357600080fd5b6000803560e01c80633d303c92146102265780634f38e2b8146101f55780636fe7b0ba146101c457806374261145146101a8578063bf15fcd814610157578063bf797959146100dd578063bfa75143146100b45763ca4ece221461007657600080fd5b346100b15760206100948361008a366102e9565b9093919330610408565b819391936100a7575b5050519015158152f35b109150838061009d565b80fd5b5090346100d9576020906100d06100ca366102e9565b916103a8565b90519015158152f35b5080fd5b5090346100d95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d9576004359167ffffffffffffffff83116100b1575061013c6101356020933690600401610247565b9030610408565b8192919261014e575b50519015158152f35b15915038610145565b50346100b1575061017061016a3661027a565b91610408565b901561017f5760209151908152f35b600482517f1f1b8f61000000000000000000000000000000000000000000000000000000008152fd5b5090346100d9576020906100d06101be366102e9565b9161034f565b50346100b15760206101d98361008a366102e9565b819391936101eb575050519015158152f35b149150838061009d565b50346100b157602061020a8361008a366102e9565b8193919361021c575050519015158152f35b119150838061009d565b50346100b1575061023961016a3661027a565b825191151582526020820152f35b9181601f840112156102755782359167ffffffffffffffff8311610275576020838186019501011161027557565b600080fd5b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126102755760043573ffffffffffffffffffffffffffffffffffffffff8116810361027557916024359067ffffffffffffffff8211610275576102e591600401610247565b9091565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261027557600435916024359067ffffffffffffffff8211610275576102e591600401610247565b90939293848311610275578411610275578101920390565b9290919260005b63ffffffff821690811561039d5761013582610373928888610337565b81610392575b50610388579060201c90610356565b5050915050600190565b600191501438610379565b505050915050600090565b92909192600090815b63ffffffff82169081156103fc57610135826103ce928989610337565b90159081156103f0575b506103e7579060201c906103b1565b50509150915090565b600191501415386103d8565b50505050915050600190565b916000906020928294826040519283375afa60203d1416918261042757565b600051915056fea26469706673582212200458f875fadeeb52c1e054aa965d8292bed98c8059d7cbdeadebad7fe2b4b8e364736f6c63430008150033", + "nonce": "0x7", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x7d6f5d436a66e3817950f3222c6eb48f591cd50446d90b2b246924bcb5d1a6ce", + "transactionType": "CREATE", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0x1bE38977300a4077e1d632467782017b452971d8", + "function": null, + "arguments": [ + "0x41023Ee1Bb9d3770c7eeb0Ce2935e7d766c77E01", + "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8" + ], + "transaction": { + "type": "0x02", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "gas": "0x320276", + "value": "0x0", + "data": "0x61014034620002a6576001600160401b0362002dd8601f38829003908101601f191684019083821185831017620002905780859160409485948552833981010312620002a65782516001600160a01b039384821691829003620002a6576020015190848216808303620002a6578351906200007a82620002ab565b601d825260208201957f456c656b7472696b204c696d6974204f726465722050726f746f636f6c0000008752600260208751620000b781620002ab565b828152019761763160f01b8952600160005560018060a01b031994858354168355600154338782161760015589519b3391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a351902097208760e05261010098818a524660a05260208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f998a84528983015260608201524660808201523060a082015260a0815260c08101928184109084111762000290578288525190206080523060c0526101209687528315801562000287575b620002785750600480548316919091179055600380549091169190911790558151600081526001600160a01b03821660208201527f1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc9162000234917f649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed090604090a18351600081526001600160a01b0390911660208201529081906040820190565b0390a15190612b109283620002c8843960805183611d8f015260a05183611e8a015260c05183611d60015260e05183611dde01525182611e0401525181611dbb0152f35b63d92e233d60e01b8152600490fd5b50811562000193565b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620002905760405256fe610180604052600436101561001357600080fd5b60003560e01c80630610f4a714611b4157806315169dec14611b015780632024cbc114611a0e5780633644e515146119eb5780633c3efab4146119c45780635f2a64511461190957806369328dec146118705780636d70f7ae146118315780636fda538f146116ef578063715018a61461167357806379ba50971461156d5780638da5cb5b146115465780638efede3d1461147457806390d6e14c146113a2578063ab37f48614611363578063c2ee3a0814611340578063c415b95c14611319578063cf0f969d146112ed578063e30c3978146112c6578063f2fde38b146112445763fe61e35c1461010457600080fd5b3461049a5760e060031936011261049a5767ffffffffffffffff60043581811161049a57610136903690600401611bf1565b610120526101605260243581811161049a57610156903690600401611bf1565b60e0526101405260443581811161049a57610175903690600401611bf1565b60c0526101005260643581811161049a57610194903690600401611bf1565b60843583811161049a576101ac903690600401611b8c565b919060a43585811161049a576101c6903690600401611bf1565b93909560c43590811161049a576101e1903690600401611bf1565b93909533600052600760205260ff6040600020541615611214576002600054146111b6576002600055610120511561118c5760e051610120511480159061117e575b8015611172575b61086c5760005b61012051811061089657505050601481101561049f575b50505050505060005b610120518110610262576001600055005b610273816101205161016051611cc5565b906102848160e05161014051611c94565b356102958260c05161010051611c94565b3561029f84612353565b9361030d6102b06101208301611ca4565b6102bc60e08401611ca4565b906001600160a01b03604051927fa9059cbb0000000000000000000000000000000000000000000000000000000060208501521660248301528460448301526044825261030882611ec4565b61285c565b846000526006602052604060002054906101c08101601461032e8284611d05565b905010156103ba575b506001957f2b15903b1f1516345ba547119efb6a90ccb8012f1803cc933c0a28b9291a5fef92826001600160a01b0361037561010060c09601611ca4565b16956001600160a01b0361038c6101208401611ca4565b1697608093604051958652602086015260408501526060840152803582840152013560a0820152a301610251565b956103d76103d183986001600160a01b0394611d05565b90612a78565b916103e481959295612712565b166103f160a08a01611ca4565b90803b1561049a57876000889361043c82968a996040519b8c98899788967fb6e1471a0000000000000000000000000000000000000000000000000000000088528d600489016126db565b03925af191821561048e576001977f2b15903b1f1516345ba547119efb6a90ccb8012f1803cc933c0a28b9291a5fef9460c09461047f575b509250925095610337565b61048890611eb0565b38610474565b6040513d6000823e3d90fd5b600080fd5b6104a891612a78565b90949160805293926104bb608051612712565b82810361086c5760005b8181106107f357506001600160a01b03608051163b1561049a5760405160a0527f2499e3a20000000000000000000000000000000000000000000000000000000060a0515260c460a0510160c0600460a051015261012051905260e460a0510160e46101205160051b60a051010190610160519060005b61012051811061064b5750505061058a61056e60209260031960a051820301602460a051015260e051610140516127b0565b60031960a051820301604460a051015260c051610100516127b0565b60031960a051820301606460a051015282815201959060005b818110610623575050506000946105ea926105cd9260031960a051840301608460a05101526127b0565b60031960a05182030160a460a051015260a0519360a05193611f2e565b0360a051836001600160a01b03608051165af1801561048e57610613575b388080808080610248565b61061e60a051611eb0565b610608565b9091966020806001926001600160a01b0361063d8c611bd0565b1681520198019291016105a3565b9091927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c60a051820301835283357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe216101605136030181121561049a5760206107e860019382936101605101906107c96107ad6101e084358452868501358785015260408501356040850152606080860135908501526080808601359085015260a06001600160a01b03610700828801611bd0565b16908501526001600160a01b0361071960c08701611bd0565b1660c08501526001600160a01b0361073360e08701611bd0565b1660e08501526101006001600160a01b0361074f828801611bd0565b16908501526101206001600160a01b0361076a828801611bd0565b169085015261014061077d818701611be4565b1515908501526101608086013590850152610180908061079f83880188612760565b929093870152850191611f2e565b6101a06107bc81860186612760565b9185840390860152611f2e565b916107da6101c09182810190612760565b929091818503910152611f2e565b95019301910161053c565b8061086661080c610807600194868c611c94565b611ca4565b610817838888611c94565b3590604051917fa9059cbb0000000000000000000000000000000000000000000000000000000060208401526001600160a01b0360805116602484015260448301526044825261030882611ec4565b016104c5565b60046040517ffc235960000000000000000000000000000000000000000000000000000000008152fd5b6108a7816101205161016051611cc5565b906108b88160e05161014051611c94565b35916108ca8260c05161010051611c94565b359285831015611143576108e38360051b860186611d05565b9180916108ef85612353565b916020860135421161111257606086013515908115611105575b81156110fc575b5080156110f4575b6110ca576001600160a01b036109316101208701611ca4565b16600052600560205260ff604060002054161580156110a1575b6110775761095c6101008601611ca4565b6001600160a01b03806109726101208901611ca4565b1691161461104d576001600160a01b0361098e60a08701611ca4565b16158015611030575b8015611013575b8015610ff7575b610fcd5760c085016001600160a01b036109be82611ca4565b1615159081610fb0575b50610f8657816000526006602052604060002054604086013514610f5c576109f36101408601611cb8565b15610f2a57670de0b6b3a7640000808402848104821485151715610ed15788610a1b91612442565b906040870135808202918115918304141715610ed157610a4090606088013590612442565b10610f00578160005260066020526040600020805490848201809211610ed1575560808501358084810204841481151715610ed157610a86908460408801359102612442565b826000526006602052604086013560406000205411610ea757935b610ae36020610ab036896120c7565b604051809381927f95de97cc00000000000000000000000000000000000000000000000000000000835260048301612250565b038173fb3e436cafc6723d160d17ff33b38598156ac1025af490811561048e57600091610e6d575b5015610e0557610b71916020916001600160a01b03610b2c60a08a01611ca4565b16906040518095819482937f1626ba7e000000000000000000000000000000000000000000000000000000008452896004850152604060248501526044840191611f2e565b03915afa90811561048e57600091610d8a575b507fffffffff000000000000000000000000000000000000000000000000000000007f1626ba7e00000000000000000000000000000000000000000000000000000000911603610d60575b6101808401610bde8186611d05565b9050610d18575b506101a084016014610bf78287611d05565b90501015610c62575b505060019450610c2a90610c176101008501611ca4565b90610c2460a08601611ca4565b916127ed565b80610c38575b505001610231565b610c48610100610c5b9301611ca4565b906001600160a01b0360045416916127ed565b3880610c30565b610c776103d16001600160a01b039287611d05565b929091610c8381612712565b1690610c9160a08801611ca4565b9084600052600660205260406000205494833b1561049a57610cea87956000979388946040519e8f998a9889977f1ad047d2000000000000000000000000000000000000000000000000000000008952600489016126db565b03925af190811561048e57600195610c2a92610d09575b819250610c00565b610d1290611eb0565b38610d01565b610d25610d2b9186611d05565b90611f6d565b15610d365738610be5565b60046040517fb6629c02000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b90506020813d602011610dfd575b81610da560209383611ee0565b8101031261049a57517fffffffff000000000000000000000000000000000000000000000000000000008116810361049a577fffffffff00000000000000000000000000000000000000000000000000000000610b84565b3d9150610d98565b610e17610e2592610e1d923691612072565b83612614565b91909161247b565b6001600160a01b0380610e3a60a08801611ca4565b1691160315610bcf5760046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b90506020813d602011610e9f575b81610e8860209383611ee0565b8101031261049a57610e9990611f21565b38610b0b565b3d9150610e7b565b60046040517f17015bc1000000000000000000000000000000000000000000000000000000008152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60046040517fa0de07d3000000000000000000000000000000000000000000000000000000008152fd5b915085606085013511610f00576040840135916080850135938260005260066020526040860135604060002055610aa1565b60046040517fca92fdbb000000000000000000000000000000000000000000000000000000008152fd5b60046040517fd4dfdafe000000000000000000000000000000000000000000000000000000008152fd5b90506001600160a01b03610fc43392611ca4565b161415386109c8565b60046040517fd92e233d000000000000000000000000000000000000000000000000000000008152fd5b506001600160a01b0361100c60e08701611ca4565b16156109a5565b506001600160a01b036110296101008701611ca4565b161561099e565b506001600160a01b036110466101208701611ca4565b1615610997565b60046040517fdd807227000000000000000000000000000000000000000000000000000000008152fd5b60046040517ff84835a0000000000000000000000000000000000000000000000000000000008152fd5b506001600160a01b036110b76101008701611ca4565b1660005260ff604060002054161561094b565b60046040517f1f2a2005000000000000000000000000000000000000000000000000000000008152fd5b508615610918565b90501538610910565b6040870135159150610909565b602483604051907f2e775cae0000000000000000000000000000000000000000000000000000000082526004820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b508160c051141561022a565b5060c05160e0511415610223565b60046040517f521299a9000000000000000000000000000000000000000000000000000000008152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b60246040517fc0ae66ad000000000000000000000000000000000000000000000000000000008152336004820152fd5b3461049a57602060031936011261049a5761125d611bba565b611265611c22565b6001600160a01b0380911690817fffffffffffffffffffffffff00000000000000000000000000000000000000006002541617600255600154167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700600080a3005b3461049a57600060031936011261049a5760206001600160a01b0360025416604051908152f35b3461049a57602060031936011261049a5760043560005260066020526020604060002054604051908152f35b3461049a57600060031936011261049a5760206001600160a01b0360045416604051908152f35b3461049a57600060031936011261049a576020604051670de0b6b3a76400008152f35b3461049a57602060031936011261049a576001600160a01b03611384611bba565b166000526005602052602060ff604060002054166040519015158152f35b3461049a57602060031936011261049a576004356001600160a01b0380821680920361049a576113d0611c22565b8115610fcd576003549081169082821461144a57604080516001600160a01b03938416815292841660208401527fffffffffffffffffffffffff0000000000000000000000000000000000000000927f1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc9190a11617600355005b60046040517fea0f8928000000000000000000000000000000000000000000000000000000008152fd5b3461049a57602060031936011261049a5761148d611bba565b611495611c22565b6001600160a01b0390818116918215610fcd5760045490811683811461151c57604080516001600160a01b0392831681529390911660208401527fffffffffffffffffffffffff0000000000000000000000000000000000000000927f649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed09190a11617600455005b60046040517fa133328a000000000000000000000000000000000000000000000000000000008152fd5b3461049a57600060031936011261049a5760206001600160a01b0360015416604051908152f35b3461049a57600060031936011261049a576002546001600160a01b0333818316036115ef577fffffffffffffffffffffffff00000000000000000000000000000000000000008092166002556001549133908316176001553391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152fd5b3461049a57600060031936011261049a5761168c611c22565b60006001600160a01b037fffffffffffffffffffffffff00000000000000000000000000000000000000008060025416600255600154908116600155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461049a57604060031936011261049a5767ffffffffffffffff60043581811161049a57611721903690600401611bf1565b9160243590811161049a5761173a903690600401611bf1565b92611743611c22565b801561118c5783810361086c5760005b81811061175c57005b6001600160a01b039081611774610807838689611c94565b1615610fcd576001917f49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e2744176117b16117ac848a89611c94565b611cb8565b91806117c161080786898c611c94565b166000526118046020936005855260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b61181261080785888b611c94565b16916118226117ac858b8a611c94565b6040519015158152a201611753565b3461049a57602060031936011261049a576001600160a01b03611852611bba565b166000526007602052602060ff604060002054166040519015158152f35b3461049a57606060031936011261049a57611889611bba565b604435906001600160a01b039081831680930361049a576118a8611c22565b169081158015611901575b610fcd576118ff91604051917fa9059cbb000000000000000000000000000000000000000000000000000000006020840152602483015260243560448301526044825261030882611ec4565b005b5080156118b3565b3461049a5761191736611b59565b61192360a08201611ca4565b6001600160a01b033391160361199a5761193c81612353565b8060005260066020526040806000205492013591828114610f5c5760407f87b5f0afdc3a118b68246141c5bd338672ab3e901be636e27116238d284de6ac918151908482526020820152a16000526006602052604060002055600080f35b60046040517f4ca88867000000000000000000000000000000000000000000000000000000008152fd5b3461049a57600060031936011261049a5760206001600160a01b0360035416604051908152f35b3461049a57600060031936011261049a576020611a06611d56565b604051908152f35b3461049a57604060031936011261049a57611a27611bba565b602435908115159081830361049a576001600160a01b0390611a47611c22565b16918215610fcd578260005260076020528160ff60406000205416151514611ad7577fcba86444cdc912f5fa5f53c20361b3517933eb181876b3f4a0d47478c6a3039b91611ace602092856000526007845260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b604051908152a2005b60046040517f5b2625c0000000000000000000000000000000000000000000000000000000008152fd5b3461049a57602060031936011261049a5760043567ffffffffffffffff811161049a57611b37610d256020923690600401611b8c565b6040519015158152f35b3461049a576020611a06611b5436611b59565b612353565b6003199060208282011261049a576004359167ffffffffffffffff831161049a57826101e09203011261049a5760040190565b9181601f8401121561049a5782359167ffffffffffffffff831161049a576020838186019501011161049a57565b600435906001600160a01b038216820361049a57565b35906001600160a01b038216820361049a57565b3590811515820361049a57565b9181601f8401121561049a5782359167ffffffffffffffff831161049a576020808501948460051b01011161049a57565b6001600160a01b03600154163303611c3657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b91908110156111435760051b0190565b356001600160a01b038116810361049a5790565b35801515810361049a5790565b91908110156111435760051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe218136030182121561049a570190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561049a570180359067ffffffffffffffff821161049a5760200191813603831361049a57565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016301480611e87575b15611db1577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117611e585760405251902090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b507f00000000000000000000000000000000000000000000000000000000000000004614611d88565b67ffffffffffffffff8111611e5857604052565b6080810190811067ffffffffffffffff821117611e5857604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611e5857604052565b5190811515820361049a57565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b90611fc5906001600160a01b036003541692604093849283518095819482937f3d303c920000000000000000000000000000000000000000000000000000000084528560048501528760248501526044840191611f2e565b03915afa90811561202d576000928392611fed575b505081611fe5575090565b600191501490565b9080939250813d8311612026575b6120058183611ee0565b810103126120235750602061201982611f21565b9101513880611fda565b80fd5b503d611ffb565b82513d6000823e3d90fd5b67ffffffffffffffff8111611e5857601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b92919261207e82612038565b9161208c6040519384611ee0565b82948184528183011161049a578281602093846000960137010152565b9080601f8301121561049a578160206120c493359101612072565b90565b9190916101e090818185031261049a576040519182019067ffffffffffffffff9183811083821117611e58576040528294813584526020820135602085015260408201356040850152606082013560608501526080820135608085015261213060a08301611bd0565b60a085015261214160c08301611bd0565b60c085015261215260e08301611bd0565b60e0850152610100612165818401611bd0565b90850152610120612177818401611bd0565b90850152610140612189818401611be4565b9085015261016080830135908501526101808083013584811161049a57826121b29185016120a9565b908501526101a08083013584811161049a57826121d09185016120a9565b908501526101c0928383013590811161049a576121ed92016120a9565b910152565b919082519283825260005b84811061223c5750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b6020818301810151848301820152016121fd565b906120c4916020815281516020820152602082015160408201526040820151606082015260608201516080820152608082015160a082015260a08201516001600160a01b0380911660c08301528060c08401511660e083015260e0830151816101009116818401528301518161012091168184015283015190610140911681830152820151610160901515818301528201516101809081830152820151906101e06123086101a09382858501526102008401906121f2565b928401516123437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0946101c0928686830301848701526121f2565b94015192828503019101526121f2565b60206123636123969236906120c7565b604051809381927fc3c1f2ec00000000000000000000000000000000000000000000000000000000835260048301612250565b038173fb3e436cafc6723d160d17ff33b38598156ac1025af490811561048e57600091612411575b506123c7611d56565b906040519060208201927f19010000000000000000000000000000000000000000000000000000000000008452602283015260428201526042815261240b81611ec4565b51902090565b906020823d821161243a575b8161242a60209383611ee0565b81010312612023575051386123be565b3d915061241d565b811561244c570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60058110156125e5578061248c5750565b600181036124f25760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152fd5b600281036125585760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152fd5b60031461256157565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9060418151146000146126425761263e916020820151906060604084015193015160001a9061264c565b9091565b5050600090600290565b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083116126cf5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156126c25781516001600160a01b038116156126bc579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b926001600160a01b036120c498969360c0969386521660208501526040840152606083015260808201528160a08201520191611f2e565b6001600160a01b0316308114908115612757575b5061272d57565b60046040517f8a5039c1000000000000000000000000000000000000000000000000000000008152fd5b90501538612726565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561049a57016020813591019167ffffffffffffffff821161049a57813603831361049a57565b90918281527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831161049a5760209260051b809284830137010190565b91906001600160a01b03604051927f23b872dd00000000000000000000000000000000000000000000000000000000602085015216602483015230604483015260648201526064815260a081019181831067ffffffffffffffff841117611e585761285a9260405261285c565b565b6001600160a01b031690604051604081019080821067ffffffffffffffff831117611e58576128ed916040526020938482527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564858301526000808587829751910182855af13d156129a4573d916128d283612038565b926128e06040519485611ee0565b83523d868885013e6129a8565b908151806128fc575b50505050565b828491810103126120235750816129139101611f21565b15612920578080806128f6565b608490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b6060915b91929015612a2357508151156129bc575090565b3b156129c55790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b825190915015612a365750805190602001fd5b612a74906040519182917f08c379a00000000000000000000000000000000000000000000000000000000083526020600484015260248301906121f2565b0390fd5b9160148210612ab0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec6014843560601c9401920190565b60046040517fef356d7a000000000000000000000000000000000000000000000000000000008152fdfea2646970667358221220d87ea5dac76b4fe26365a437e82d4ea8ef37bd102b5e9128b5223f08d0ad7aa864736f6c6343000815003300000000000000000000000041023ee1bb9d3770c7eeb0ce2935e7d766c77e010000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8", + "nonce": "0x8", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xbe4e1fe9aa606e246e1397f5f3ac597e24febd93d68e1c80888b5c4bd798b526", + "transactionType": "CALL", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0x1bE38977300a4077e1d632467782017b452971d8", + "function": "manageOperatorPrivilege(address,bool)", + "arguments": [ + "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "true" + ], + "transaction": { + "type": "0x02", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "to": "0x1be38977300a4077e1d632467782017b452971d8", + "gas": "0x111af", + "value": "0x0", + "data": "0x2024cbc10000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b80000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x9", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionType": "CALL", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0x1bE38977300a4077e1d632467782017b452971d8", + "function": "updateTokenWhitelist(address[],bool[])", + "arguments": [ + "[0x057e8e2bC40ECff87e6F9b28750D5E7AC004Eab9, 0x3cf2c147d43C98Fa96d267572e3FD44A4D3940d4, 0x4B6b9B31c72836806B0B1104Cf1CdAB8A0E3BD66, 0x9Ee1Aa18F3FEB435f811d6AE2F71B7D2a4Adce0B, 0x124ABC63F20c6e2088078bd61e2Db100Ff30836e, 0xecf6Bdde77C77863Ae842b145f9ab296E5eAcAF9, 0x8bA5b0452b0a4da211579AA2e105c3da7C0Ad36c, 0x8488c316e23504B8554e4BdE9651802CD45aea24, 0xeDc98fc6240671dF8e7eD035CE39143320c1A174, 0xeEf8e3c318fb3d86489FB258847d028adC629e14]", + "[true, true, true, true, true, true, true, true, true, true]" + ], + "transaction": { + "type": "0x02", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "to": "0x1be38977300a4077e1d632467782017b452971d8", + "gas": "0x5c4d5", + "value": "0x0", + "data": "0x6fda538f000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000057e8e2bc40ecff87e6f9b28750d5e7ac004eab90000000000000000000000003cf2c147d43c98fa96d267572e3fd44a4d3940d40000000000000000000000004b6b9b31c72836806b0b1104cf1cdab8a0e3bd660000000000000000000000009ee1aa18f3feb435f811d6ae2f71b7d2a4adce0b000000000000000000000000124abc63f20c6e2088078bd61e2db100ff30836e000000000000000000000000ecf6bdde77c77863ae842b145f9ab296e5eacaf90000000000000000000000008ba5b0452b0a4da211579aa2e105c3da7c0ad36c0000000000000000000000008488c316e23504b8554e4bde9651802cd45aea24000000000000000000000000edc98fc6240671df8e7ed035ce39143320c1a174000000000000000000000000eef8e3c318fb3d86489fb258847d028adc629e14000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0xa", + "accessList": [] + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0x84e9a949bd1891141ec9e5c8043ef72b22d519b9cf2e8234c260b07d2206b436", + "transactionIndex": "0x23", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": null, + "cumulativeGasUsed": "0x468d80", + "gasUsed": "0x44a0a", + "contractAddress": "0xfb3E436cAFC6723d160D17fF33b38598156aC102", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0x4b4e47e06" + }, + { + "transactionHash": "0x12ba03167ef5332e85d2bc822a30d73574c7d689fdfd4b90ade6b927c40a8724", + "transactionIndex": "0x24", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": null, + "cumulativeGasUsed": "0x4b10e0", + "gasUsed": "0x48360", + "contractAddress": "0x41023Ee1Bb9d3770c7eeb0Ce2935e7d766c77E01", + "logs": [], + "status": "0x1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0x4b4e47e06" + }, + { + "transactionHash": "0x7d6f5d436a66e3817950f3222c6eb48f591cd50446d90b2b246924bcb5d1a6ce", + "transactionIndex": "0x26", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": null, + "cumulativeGasUsed": "0x75faf4", + "gasUsed": "0x267aee", + "contractAddress": "0x1bE38977300a4077e1d632467782017b452971d8", + "logs": [ + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8" + ], + "data": "0x", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x7d6f5d436a66e3817950f3222c6eb48f591cd50446d90b2b246924bcb5d1a6ce", + "transactionIndex": "0x26", + "logIndex": "0x52", + "removed": false + }, + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed0" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x7d6f5d436a66e3817950f3222c6eb48f591cd50446d90b2b246924bcb5d1a6ce", + "transactionIndex": "0x26", + "logIndex": "0x53", + "removed": false + }, + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x7d6f5d436a66e3817950f3222c6eb48f591cd50446d90b2b246924bcb5d1a6ce", + "transactionIndex": "0x26", + "logIndex": "0x54", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00020000000000000000040000800000000000000010000000800000080000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000001000000000000000000000000000000000000020000000000000000000800000800000000000000000000000000400000000000000000000000000000000000001000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000100000020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0x4b4e47e06" + }, + { + "transactionHash": "0xbe4e1fe9aa606e246e1397f5f3ac597e24febd93d68e1c80888b5c4bd798b526", + "transactionIndex": "0x27", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": "0x1bE38977300a4077e1d632467782017b452971d8", + "cumulativeGasUsed": "0x76b617", + "gasUsed": "0xbb23", + "contractAddress": null, + "logs": [ + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0xcba86444cdc912f5fa5f53c20361b3517933eb181876b3f4a0d47478c6a3039b", + "0x0000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0xbe4e1fe9aa606e246e1397f5f3ac597e24febd93d68e1c80888b5c4bd798b526", + "transactionIndex": "0x27", + "logIndex": "0x55", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x000a0000000000000000040000800000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000100000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "effectiveGasPrice": "0x4b4e47e06" + }, + { + "transactionHash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionIndex": "0x28", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": "0x1bE38977300a4077e1d632467782017b452971d8", + "cumulativeGasUsed": "0x7ae34b", + "gasUsed": "0x42d34", + "contractAddress": null, + "logs": [ + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000057e8e2bc40ecff87e6f9b28750d5e7ac004eab9" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionIndex": "0x28", + "logIndex": "0x56", + "removed": false + }, + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000003cf2c147d43c98fa96d267572e3fd44a4d3940d4" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionIndex": "0x28", + "logIndex": "0x57", + "removed": false + }, + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000004b6b9b31c72836806b0b1104cf1cdab8a0e3bd66" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionIndex": "0x28", + "logIndex": "0x58", + "removed": false + }, + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000009ee1aa18f3feb435f811d6ae2f71b7d2a4adce0b" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionIndex": "0x28", + "logIndex": "0x59", + "removed": false + }, + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000124abc63f20c6e2088078bd61e2db100ff30836e" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionIndex": "0x28", + "logIndex": "0x5a", + "removed": false + }, + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000ecf6bdde77c77863ae842b145f9ab296e5eacaf9" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionIndex": "0x28", + "logIndex": "0x5b", + "removed": false + }, + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000008ba5b0452b0a4da211579aa2e105c3da7c0ad36c" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionIndex": "0x28", + "logIndex": "0x5c", + "removed": false + }, + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000008488c316e23504b8554e4bde9651802cd45aea24" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionIndex": "0x28", + "logIndex": "0x5d", + "removed": false + }, + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000edc98fc6240671df8e7ed035ce39143320c1a174" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionIndex": "0x28", + "logIndex": "0x5e", + "removed": false + }, + { + "address": "0x1bE38977300a4077e1d632467782017b452971d8", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000eef8e3c318fb3d86489fb258847d028adc629e14" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xe1e037cbec533ffe56b44c313a8fd18aa092c7356e8eaab1716b686c729c6bb7", + "blockNumber": "0x4b3432", + "transactionHash": "0x004bc515c6c04b675f94652df174ea06460ccc8c7308bf93633efb9d4343d05b", + "transactionIndex": "0x28", + "logIndex": "0x5f", + "removed": false + } + ], + "status": "0x1", + "logsBloom": "0x00020002100000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000020000000000008000000000000000000000000000000110000000000000000000000000000000000000800000002000020000001000010020000000000000000000000000000000000000200002001000800000000020002000000000000000000000000000000000000040000000000000080000020000000000000000000000000080000000800000000000000008000000000400004040000000001000000000000000800000100800000000000000000000000000000000000000800000000000000002000000000000000", + "type": "0x2", + "effectiveGasPrice": "0x4b4e47e06" + } + ], + "libraries": [ + "src/libraries/OrderEngine.sol:OrderEngine:0xfb3e436cafc6723d160d17ff33b38598156ac102" + ], + "pending": [], + "returns": {}, + "timestamp": 1703142685, + "chain": 11155111, + "multi": false, + "commit": "951d56e" +} \ No newline at end of file diff --git a/broadcast/deployOrderEngine.s.sol/1890/run-1712127996.json b/broadcast/deployOrderEngine.s.sol/1890/run-1712127996.json new file mode 100644 index 0000000..9193b52 --- /dev/null +++ b/broadcast/deployOrderEngine.s.sol/1890/run-1712127996.json @@ -0,0 +1,114 @@ +{ + "transactions": [ + { + "hash": null, + "transactionType": "CREATE", + "contractName": "OrderEngine", + "contractAddress": "0x4822f84DED2f60D2cbF0e353ab51b7B5D2e89935", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xf29f5fc83c9310c887efce9d68cae1f046b6511b", + "gas": "0xd7c66", + "data": "0x6080806040523461001a57610b5b9081610020823930815050f35b600080fdfe608060405260048036101561001357600080fd5b60003560e01c90816321cd19a91461069f5781634416e986146104d857816395de97cc146104b7578163b4c07547146100d557508063b91611f41461007c5763c3c1f2ec1461006157600080fd5b602061007461006f3661077e565b610985565b604051908152f35b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d05760206040517fb91209a767a8178c503c992a2db0dd232393048d748c43a04d40fcccacc0df008152f35b600080fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d05780359067ffffffffffffffff82116100d057366023830112156100d05781602461012e93369301359101610895565b60606101c060405161013f8161082d565b60008152600060208201526000604082015260008382015260006080820152600060a0820152600060c0820152600060e0820152600061010082015260006101208201526000610140820152600061016082015282610180820152826101a082015201526101e0818051810103126100d05760208101516040820151916060810151608082015160a08301516101d760c08501610b04565b6101e360e08601610b04565b6101f06101008701610b04565b6101fd6101208801610b04565b9161020b6101408901610b04565b936101608901519586151587036100d0576101808a0151976101a08b0151996101c08c01519b6101e001519c6040519b60208d015260208c5261024d8c610879565b6040519c60208e015260208d526102638d610879565b6040519d60208f01528d6020815261027a90610879565b6040519e8f916102898361082d565b825260208201526040015260608d015260808c015273ffffffffffffffffffffffffffffffffffffffff1660a08b015273ffffffffffffffffffffffffffffffffffffffff1660c08a015273ffffffffffffffffffffffffffffffffffffffff1660e089015273ffffffffffffffffffffffffffffffffffffffff1661010088015273ffffffffffffffffffffffffffffffffffffffff1661012087015215156101408601526101608501526101808401526101a08301526101c082015260405180916020825280516020830152602081015160408301526040810151606083015260608101516080830152608081015160a083015260a081015173ffffffffffffffffffffffffffffffffffffffff1660c083015260c081015173ffffffffffffffffffffffffffffffffffffffff1660e083015260e081015173ffffffffffffffffffffffffffffffffffffffff1661010083015261010081015173ffffffffffffffffffffffffffffffffffffffff1661012083015261012081015173ffffffffffffffffffffffffffffffffffffffff1661014083015261014081015115156101608301526101608101516101808301526101808101516101a083016101e09052610200830161045c916107cf565b906101a08101517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09283858203016101c0860152610499916107cf565b906101c0015191838203016101e08401526104b3916107cf565b0390f35b60206104cd60a06104c73661077e565b01610906565b3b1515604051908152f35b6104e13661077e565b6104ed60a08201610906565b6104f960c08301610906565b61050560e08401610906565b9061016061010094610518868201610906565b9361012090610528828401610906565b9061014091610538838601610927565b9361055161054a610180880188610934565b3691610895565b602081519101209761056a61054a6101a0890189610934565b602081519101209961058361054a6101c08a018a610934565b602081519101209b6040519d8e918a35602084015260208b0135604084015260408b0135606084015260608b0135608084015260808b013560a084015273ffffffffffffffffffffffffffffffffffffffff978880968180941660c08701521660e08501521691015216908b0152169088015215158287015201356101808501526101a08401526101c08301526101e09081830152815261020081019181831067ffffffffffffffff84111761067157507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0090826040526020835261066c6102208201826107cf565b030190f35b6041907f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6040813601126100d057813567ffffffffffffffff918282116100d0576101e09082360301126100d0576106f5908301610985565b60405160208101917f1901000000000000000000000000000000000000000000000000000000000000835260243560228301526042820152604281526080810192818410908411176107505760209350826040525190208152f35b6041847f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc906020828201126100d0576004359167ffffffffffffffff83116100d057826101e0920301126100d05760040190565b919082519283825260005b8481106108195750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b6020818301810151848301820152016107da565b6101e0810190811067ffffffffffffffff82111761084a57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040810190811067ffffffffffffffff82111761084a57604052565b92919267ffffffffffffffff9182811161084a5760405192601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011684019081118482101761084a576040528294818452818301116100d0578281602093846000960137010152565b3573ffffffffffffffffffffffffffffffffffffffff811681036100d05790565b3580151581036100d05790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156100d0570180359067ffffffffffffffff82116100d0576020019181360383136100d057565b61099160a08201610906565b9061099e60c08201610906565b6109aa60e08301610906565b90610160610100936109bd858201610906565b92610120956109cd878401610906565b90610140916109dd838601610927565b92610180946109f161054a87890189610934565b6020815191012098610a0a61054a6101a08a018a610934565b602081519101209a610a2361054a6101c08b018b610934565b602081519101209c6040519e8f927fb91209a767a8178c503c992a2db0dd232393048d748c43a04d40fcccacc0df0060208501528b35604085015260208c0135606085015260408c0135608085015260608c013560a085015260808c013560c085015273ffffffffffffffffffffffffffffffffffffffff988980978180951660e088015216908501521691015216908b0152168489015215159087015201356101a08501526101c08401526101e083015261020090818301528152610220810181811067ffffffffffffffff82111761084a576040526020815191012090565b519073ffffffffffffffffffffffffffffffffffffffff821682036100d05756fea26469706673582212201805f314460b1a5374bb253f72f024bdc8ea21cc2e77073b1164f84307a2015264736f6c63430008150033", + "nonce": "0x0" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "Predicates", + "contractAddress": "0x5F354319704dCBeb487b44762621DD8B0b30D5B7", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xf29f5fc83c9310c887efce9d68cae1f046b6511b", + "gas": "0x5dd9f", + "value": "0x0", + "data": "0x6080806040523461001657610464908161001c8239f35b600080fdfe604060808152600436101561001357600080fd5b6000803560e01c80633d303c92146102265780634f38e2b8146101f55780636fe7b0ba146101c457806374261145146101a8578063bf15fcd814610157578063bf797959146100dd578063bfa75143146100b45763ca4ece221461007657600080fd5b346100b15760206100948361008a366102e9565b9093919330610408565b819391936100a7575b5050519015158152f35b109150838061009d565b80fd5b5090346100d9576020906100d06100ca366102e9565b916103a8565b90519015158152f35b5080fd5b5090346100d95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d9576004359167ffffffffffffffff83116100b1575061013c6101356020933690600401610247565b9030610408565b8192919261014e575b50519015158152f35b15915038610145565b50346100b1575061017061016a3661027a565b91610408565b901561017f5760209151908152f35b600482517f1f1b8f61000000000000000000000000000000000000000000000000000000008152fd5b5090346100d9576020906100d06101be366102e9565b9161034f565b50346100b15760206101d98361008a366102e9565b819391936101eb575050519015158152f35b149150838061009d565b50346100b157602061020a8361008a366102e9565b8193919361021c575050519015158152f35b119150838061009d565b50346100b1575061023961016a3661027a565b825191151582526020820152f35b9181601f840112156102755782359167ffffffffffffffff8311610275576020838186019501011161027557565b600080fd5b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126102755760043573ffffffffffffffffffffffffffffffffffffffff8116810361027557916024359067ffffffffffffffff8211610275576102e591600401610247565b9091565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261027557600435916024359067ffffffffffffffff8211610275576102e591600401610247565b90939293848311610275578411610275578101920390565b9290919260005b63ffffffff821690811561039d5761013582610373928888610337565b81610392575b50610388579060201c90610356565b5050915050600190565b600191501438610379565b505050915050600090565b92909192600090815b63ffffffff82169081156103fc57610135826103ce928989610337565b90159081156103f0575b506103e7579060201c906103b1565b50509150915090565b600191501415386103d8565b50505050915050600190565b916000906020928294826040519283375afa60203d1416918261042757565b600051915056fea26469706673582212200458f875fadeeb52c1e054aa965d8292bed98c8059d7cbdeadebad7fe2b4b8e364736f6c63430008150033", + "nonce": "0x1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CREATE", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0x3c553461a9c28DbCc81B9f7fA8281d70D0d18098", + "function": null, + "arguments": [ + "0x5F354319704dCBeb487b44762621DD8B0b30D5B7", + "0xf29F5fc83c9310c887EFce9D68Cae1F046B6511B" + ], + "transaction": { + "type": "0x00", + "from": "0xf29f5fc83c9310c887efce9d68cae1f046b6511b", + "gas": "0x32cee2", + "value": "0x0", + "data": "0x61014034620002a6576001600160401b0362002e93601f38829003908101601f191684019083821185831017620002905780859160409485948552833981010312620002a65782516001600160a01b039384821691829003620002a6576020015190848216808303620002a6578351906200007a82620002ab565b601d825260208201957f456c656b7472696b204c696d6974204f726465722050726f746f636f6c0000008752600260208751620000b781620002ab565b828152019761763160f01b8952600160005560018060a01b031994858354168355600154338782161760015589519b3391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a351902097208760e05261010098818a524660a05260208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f998a84528983015260608201524660808201523060a082015260a0815260c08101928184109084111762000290578288525190206080523060c0526101209687528315801562000287575b620002785750600480548316919091179055600380549091169190911790558151600081526001600160a01b03821660208201527f1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc9162000234917f649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed090604090a18351600081526001600160a01b0390911660208201529081906040820190565b0390a15190612bcb9283620002c8843960805183611e4a015260a05183611f45015260c05183611e1b015260e05183611e9901525182611ebf01525181611e760152f35b63d92e233d60e01b8152600490fd5b50811562000193565b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620002905760405256fe610180604052600436101561001357600080fd5b60003560e01c80630610f4a714611bfc57806315169dec14611bbc5780632024cbc114611ac95780633644e51514611aa65780633c3efab414611a7f5780635f2a6451146119c457806369328dec1461192b5780636d70f7ae146118ec5780636fda538f146117a5578063715018a61461172957806379ba5097146116235780638da5cb5b146115fc5780638efede3d1461152a57806390d6e14c14611458578063ab37f48614611419578063c2ee3a08146113f6578063c415b95c146113cf578063cf0f969d146113a3578063e30c39781461137c578063f2fde38b146112fa5763fe61e35c1461010457600080fd5b346104cc5760e06003193601126104cc5767ffffffffffffffff6004358181116104cc57610136903690600401611cac565b61016052610100526024358181116104cc57610156903690600401611cac565b60e052610140526044358181116104cc57610175903690600401611cac565b60c052610120526064358181116104cc57610194903690600401611cac565b916084358181116104cc576101ad903690600401611c47565b939060a4358381116104cc576101c7903690600401611cac565b95909360c435116104cc576101e13660c435600401611cac565b93909533600052600760205260ff60406000205416156112ca5760026000541461126c57600260005561016051156112425760e0516101605114801590611234575b8015611228575b6108b85760005b6101605181106108e25750505060148110156104d1575b50505050505060005b610160518110610262576001600055005b610273816101605161010051611d80565b906102848160e05161014051611d4f565b356102958260c05161012051611d4f565b35906102a08461240e565b90670de0b6b3a7640000946103236001600160a01b036102c36101208401611d5f565b166102d060e08401611d5f565b906001600160a01b03604051927fa9059cbb00000000000000000000000000000000000000000000000000000000602085015216602483015288870460448301526044825261031e82611f7f565b612917565b826000526006602052604060002054956101c0820160146103448285611dc0565b905010156103cf575b506001600160a01b037f2b15903b1f1516345ba547119efb6a90ccb8012f1803cc933c0a28b9291a5fef9360019884839461038d61010060c09801611d5f565b998161039c6101208501611d5f565b956080956040519c8d5260208d01520460408b0152046060890152803582890152013560a087015216941692a301610251565b6103df6103e59184959394611dc0565b90612b33565b6103f08394936127cd565b6103fc60a08701611d5f565b936001600160a01b0381163b156104cc578560006001600160a01b038b61045f8f96849886988f8c906040519e8f9c8d9b8c997fb6e1471a000000000000000000000000000000000000000000000000000000008b520493049160048901612796565b0393165af19081156104c0576001987f2b15903b1f1516345ba547119efb6a90ccb8012f1803cc933c0a28b9291a5fef9560c0956001600160a01b039586956104b1575b50945094509850935061034d565b6104ba90611f6b565b386104a3565b6040513d6000823e3d90fd5b600080fd5b6104da91612b33565b90949160805293946104ed6080516127cd565b8281036108b85760005b81811061083557506001600160a01b03608051163b156104cc5760405160a0527f2499e3a20000000000000000000000000000000000000000000000000000000060a0515260c460a0510160c0600460a051015261016051905260e460a0510160e46101605160051b60a05101019061010051906000905b61016051821061068b575050506105bd6105a160209260031960a051820301602460a051015260e0516101405161286b565b60031960a051820301604460a051015260c0516101205161286b565b60031960a051820301606460a05101528281520193906000905b808210610658575050506000949261061f926106029260031960a051840301608460a051015261286b565b60031960a05182030160a460a051015260a0519360a05193611fe9565b0360a051836001600160a01b03608051165af180156104c057610648575b388080808080610248565b61065360a051611f6b565b61063d565b9091948535906001600160a01b03821682036104cc57602080916001600160a01b036001941681520196019201906105d7565b9091927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c60a05182030182527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe2161010051360301843512156104cc5760208061082860019361010051883501906108096107ed6101e084358452868501358785015260408501356040850152606080860135908501526080808601359085015260a06001600160a01b03610740828801611c8b565b16908501526001600160a01b0361075960c08701611c8b565b1660c08501526001600160a01b0361077360e08701611c8b565b1660e08501526101006001600160a01b0361078f828801611c8b565b16908501526101206001600160a01b036107aa828801611c8b565b16908501526101406107bd818701611c9f565b151590850152610160808601359085015261018090806107df8388018861281b565b929093870152850191611fe9565b6101a06107fc8186018661281b565b9185840390860152611fe9565b9161081a6101c0918281019061281b565b929091818503910152611fe9565b950192019201909161056f565b610840818387611d4f565b35906001600160a01b03821682036104cc576108b2600192610863838888611d4f565b3590604051917fa9059cbb0000000000000000000000000000000000000000000000000000000060208401526001600160a01b0360805116602484015260448301526044825261031e82611f7f565b016104f7565b60046040517ffc235960000000000000000000000000000000000000000000000000000000008152fd5b6108f3816101605161010051611d80565b906109048160e05161014051611d4f565b35916109168260c05161012051611d4f565b3592858310156111f95761092f8360051b860186611dc0565b90918592819661093e8661240e565b92602087013542116111c8576060870135159081156111bb575b81156111b2575b5080156111aa575b611180576001600160a01b036109806101208801611d5f565b16600052600560205260ff60406000205416158015611157575b61112d576109ab6101008701611d5f565b6001600160a01b03806109c16101208a01611d5f565b16911614611103576001600160a01b036109dd60a08801611d5f565b161580156110e6575b80156110c9575b80156110ad575b6110835760c086016001600160a01b03610a0d82611d5f565b1615159081611066575b5061103c5782600052600660205260406000205460408701351461101257610a426101408701611d73565b15610fd25750670de0b6b3a76400008702878104670de0b6b3a76400001488151715610f795784610a72916124fd565b670de0b6b3a76400006040870135818102918183041490151715610f7957610a9f906060880135906124fd565b10610fa8578160005260066020526040600020805490670de0b6b3a764000089048201809211610f79575560808501358015670de0b6b3a76400008904808302839004141715610f7957610b0490604087013590670de0b6b3a76400008a04026124fd565b826000526006602052604086013560406000205411610f4f57670de0b6b3a7640000809195049704925b610b706020610b3d3689612182565b604051809381927f95de97cc0000000000000000000000000000000000000000000000000000000083526004830161230b565b0381734822f84ded2f60d2cbf0e353ab51b7b5d2e899355af49081156104c057600091610f15575b5015610ead57610bfe916020916001600160a01b03610bb960a08a01611d5f565b16906040518095819482937f1626ba7e000000000000000000000000000000000000000000000000000000008452896004850152604060248501526044840191611fe9565b03915afa9081156104c057600091610e32575b507fffffffff000000000000000000000000000000000000000000000000000000007f1626ba7e00000000000000000000000000000000000000000000000000000000911603610e08575b6101808401610c6b8186611dc0565b9050610dc0575b506101a084016014610c848287611dc0565b90501015610d01575b505060019450610cc0906001600160a01b03610cac6101008601611d5f565b1690610cba60a08601611d5f565b916128a8565b80610cce575b505001610231565b6001600160a01b03610ce6610100610cfa9401611d5f565b16906001600160a01b0360045416916128a8565b3880610cc6565b6103df610d0e9186611dc0565b909192610d1a846127cd565b610d2660a08801611d5f565b91816000526006602052604060002054936001600160a01b0386163b156104cc5786946040519b8c9687967f1ad047d20000000000000000000000000000000000000000000000000000000088526004880196610d8297612796565b03916001600160a01b031691815a6000948591f19081156104c057600195610cc092610db1575b819250610c8d565b610dba90611f6b565b38610da9565b610dcd610dd39186611dc0565b90612028565b15610dde5738610c72565b60046040517fb6629c02000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b90506020813d602011610ea5575b81610e4d60209383611f9b565b810103126104cc57517fffffffff00000000000000000000000000000000000000000000000000000000811681036104cc577fffffffff00000000000000000000000000000000000000000000000000000000610c11565b3d9150610e40565b610ebf610ecd92610ec592369161212d565b836126cf565b919091612536565b6001600160a01b0380610ee260a08801611d5f565b1691160315610c5c5760046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b90506020813d602011610f47575b81610f3060209383611f9b565b810103126104cc57610f4190611fdc565b38610b98565b3d9150610f23565b60046040517f17015bc1000000000000000000000000000000000000000000000000000000008152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60046040517fa0de07d3000000000000000000000000000000000000000000000000000000008152fd5b935091955082606085013511610fa857604084013591670de0b6b3a764000060808601359483600052600660205260408701356040600020550496610b2e565b60046040517fca92fdbb000000000000000000000000000000000000000000000000000000008152fd5b60046040517fd4dfdafe000000000000000000000000000000000000000000000000000000008152fd5b90506001600160a01b0361107a3392611d5f565b16141538610a17565b60046040517fd92e233d000000000000000000000000000000000000000000000000000000008152fd5b506001600160a01b036110c260e08801611d5f565b16156109f4565b506001600160a01b036110df6101008801611d5f565b16156109ed565b506001600160a01b036110fc6101208801611d5f565b16156109e6565b60046040517fdd807227000000000000000000000000000000000000000000000000000000008152fd5b60046040517ff84835a0000000000000000000000000000000000000000000000000000000008152fd5b506001600160a01b0361116d6101008801611d5f565b1660005260ff604060002054161561099a565b60046040517f1f2a2005000000000000000000000000000000000000000000000000000000008152fd5b508015610967565b9050153861095f565b6040880135159150610958565b602484604051907f2e775cae0000000000000000000000000000000000000000000000000000000082526004820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b508160c051141561022a565b5060c05160e0511415610223565b60046040517f521299a9000000000000000000000000000000000000000000000000000000008152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b60246040517fc0ae66ad000000000000000000000000000000000000000000000000000000008152336004820152fd5b346104cc5760206003193601126104cc57611313611c75565b61131b611cdd565b6001600160a01b0380911690817fffffffffffffffffffffffff00000000000000000000000000000000000000006002541617600255600154167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700600080a3005b346104cc5760006003193601126104cc5760206001600160a01b0360025416604051908152f35b346104cc5760206003193601126104cc5760043560005260066020526020604060002054604051908152f35b346104cc5760006003193601126104cc5760206001600160a01b0360045416604051908152f35b346104cc5760006003193601126104cc576020604051670de0b6b3a76400008152f35b346104cc5760206003193601126104cc576001600160a01b0361143a611c75565b166000526005602052602060ff604060002054166040519015158152f35b346104cc5760206003193601126104cc576004356001600160a01b038082168092036104cc57611486611cdd565b8115611083576003549081169082821461150057604080516001600160a01b03938416815292841660208401527fffffffffffffffffffffffff0000000000000000000000000000000000000000927f1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc9190a11617600355005b60046040517fea0f8928000000000000000000000000000000000000000000000000000000008152fd5b346104cc5760206003193601126104cc57611543611c75565b61154b611cdd565b6001600160a01b0390818116918215611083576004549081168381146115d257604080516001600160a01b0392831681529390911660208401527fffffffffffffffffffffffff0000000000000000000000000000000000000000927f649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed09190a11617600455005b60046040517fa133328a000000000000000000000000000000000000000000000000000000008152fd5b346104cc5760006003193601126104cc5760206001600160a01b0360015416604051908152f35b346104cc5760006003193601126104cc576002546001600160a01b0333818316036116a5577fffffffffffffffffffffffff00000000000000000000000000000000000000008092166002556001549133908316176001553391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152fd5b346104cc5760006003193601126104cc57611742611cdd565b60006001600160a01b037fffffffffffffffffffffffff00000000000000000000000000000000000000008060025416600255600154908116600155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346104cc5760406003193601126104cc5767ffffffffffffffff6004358181116104cc576117d7903690600401611cac565b916024359081116104cc576117f0903690600401611cac565b6117f8611cdd565b8315611242578084036108b85760005b84811061181157005b6001600160a01b03908161182e611829838989611d4f565b611d5f565b1615611083576001917f49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e27441761186b611866848789611d4f565b611d73565b8261187a611829868c8c611d4f565b166000526118bd6020916005835260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b6118cb611829858b8b611d4f565b926118da61186686898b611d4f565b9360405194151585521692a201611808565b346104cc5760206003193601126104cc576001600160a01b0361190d611c75565b166000526007602052602060ff604060002054166040519015158152f35b346104cc5760606003193601126104cc57611944611c75565b604435906001600160a01b03908183168093036104cc57611963611cdd565b1690811580156119bc575b611083576119ba91604051917fa9059cbb000000000000000000000000000000000000000000000000000000006020840152602483015260243560448301526044825261031e82611f7f565b005b50801561196e565b346104cc576119d236611c14565b6119de60a08201611d5f565b6001600160a01b0333911603611a55576119f78161240e565b80600052600660205260408060002054920135918281146110125760407f87b5f0afdc3a118b68246141c5bd338672ab3e901be636e27116238d284de6ac918151908482526020820152a16000526006602052604060002055600080f35b60046040517f4ca88867000000000000000000000000000000000000000000000000000000008152fd5b346104cc5760006003193601126104cc5760206001600160a01b0360035416604051908152f35b346104cc5760006003193601126104cc576020611ac1611e11565b604051908152f35b346104cc5760406003193601126104cc57611ae2611c75565b60243590811515908183036104cc576001600160a01b0390611b02611cdd565b16918215611083578260005260076020528160ff60406000205416151514611b92577fcba86444cdc912f5fa5f53c20361b3517933eb181876b3f4a0d47478c6a3039b91611b89602092856000526007845260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b604051908152a2005b60046040517f5b2625c0000000000000000000000000000000000000000000000000000000008152fd5b346104cc5760206003193601126104cc5760043567ffffffffffffffff81116104cc57611bf2610dcd6020923690600401611c47565b6040519015158152f35b346104cc576020611ac1611c0f36611c14565b61240e565b600319906020828201126104cc576004359167ffffffffffffffff83116104cc57826101e0920301126104cc5760040190565b9181601f840112156104cc5782359167ffffffffffffffff83116104cc57602083818601950101116104cc57565b600435906001600160a01b03821682036104cc57565b35906001600160a01b03821682036104cc57565b359081151582036104cc57565b9181601f840112156104cc5782359167ffffffffffffffff83116104cc576020808501948460051b0101116104cc57565b6001600160a01b03600154163303611cf157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b91908110156111f95760051b0190565b356001600160a01b03811681036104cc5790565b3580151581036104cc5790565b91908110156111f95760051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe21813603018212156104cc570190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156104cc570180359067ffffffffffffffff82116104cc576020019181360383136104cc57565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016301480611f42575b15611e6c577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117611f135760405251902090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b507f00000000000000000000000000000000000000000000000000000000000000004614611e43565b67ffffffffffffffff8111611f1357604052565b6080810190811067ffffffffffffffff821117611f1357604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611f1357604052565b519081151582036104cc57565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b90612080906001600160a01b036003541692604093849283518095819482937f3d303c920000000000000000000000000000000000000000000000000000000084528560048501528760248501526044840191611fe9565b03915afa9081156120e85760009283926120a8575b5050816120a0575090565b600191501490565b9080939250813d83116120e1575b6120c08183611f9b565b810103126120de575060206120d482611fdc565b9101513880612095565b80fd5b503d6120b6565b82513d6000823e3d90fd5b67ffffffffffffffff8111611f1357601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192612139826120f3565b916121476040519384611f9b565b8294818452818301116104cc578281602093846000960137010152565b9080601f830112156104cc5781602061217f9335910161212d565b90565b9190916101e09081818503126104cc576040519182019067ffffffffffffffff9183811083821117611f1357604052829481358452602082013560208501526040820135604085015260608201356060850152608082013560808501526121eb60a08301611c8b565b60a08501526121fc60c08301611c8b565b60c085015261220d60e08301611c8b565b60e0850152610100612220818401611c8b565b90850152610120612232818401611c8b565b90850152610140612244818401611c9f565b908501526101608083013590850152610180808301358481116104cc578261226d918501612164565b908501526101a0808301358481116104cc578261228b918501612164565b908501526101c092838301359081116104cc576122a89201612164565b910152565b919082519283825260005b8481106122f75750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b6020818301810151848301820152016122b8565b9061217f916020815281516020820152602082015160408201526040820151606082015260608201516080820152608082015160a082015260a08201516001600160a01b0380911660c08301528060c08401511660e083015260e0830151816101009116818401528301518161012091168184015283015190610140911681830152820151610160901515818301528201516101809081830152820151906101e06123c36101a09382858501526102008401906122ad565b928401516123fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0946101c0928686830301848701526122ad565b94015192828503019101526122ad565b602061241e612451923690612182565b604051809381927fc3c1f2ec0000000000000000000000000000000000000000000000000000000083526004830161230b565b0381734822f84ded2f60d2cbf0e353ab51b7b5d2e899355af49081156104c0576000916124cc575b50612482611e11565b906040519060208201927f1901000000000000000000000000000000000000000000000000000000000000845260228301526042820152604281526124c681611f7f565b51902090565b906020823d82116124f5575b816124e560209383611f9b565b810103126120de57505138612479565b3d91506124d8565b8115612507570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60058110156126a057806125475750565b600181036125ad5760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152fd5b600281036126135760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152fd5b60031461261c57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9060418151146000146126fd576126f9916020820151906060604084015193015160001a90612707565b9091565b5050600090600290565b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831161278a5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561277d5781516001600160a01b03811615612777579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b926001600160a01b0361217f98969360c0969386521660208501526040840152606083015260808201528160a08201520191611fe9565b6001600160a01b0316308114908115612812575b506127e857565b60046040517f8a5039c1000000000000000000000000000000000000000000000000000000008152fd5b905015386127e1565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156104cc57016020813591019167ffffffffffffffff82116104cc5781360383136104cc57565b90918281527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83116104cc5760209260051b809284830137010190565b91906001600160a01b03604051927f23b872dd00000000000000000000000000000000000000000000000000000000602085015216602483015230604483015260648201526064815260a081019181831067ffffffffffffffff841117611f135761291592604052612917565b565b6001600160a01b031690604051604081019080821067ffffffffffffffff831117611f13576129a8916040526020938482527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564858301526000808587829751910182855af13d15612a5f573d9161298d836120f3565b9261299b6040519485611f9b565b83523d868885013e612a63565b908151806129b7575b50505050565b828491810103126120de5750816129ce9101611fdc565b156129db578080806129b1565b608490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b6060915b91929015612ade5750815115612a77575090565b3b15612a805790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b825190915015612af15750805190602001fd5b612b2f906040519182917f08c379a00000000000000000000000000000000000000000000000000000000083526020600484015260248301906122ad565b0390fd5b9160148210612b6b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec6014843560601c9401920190565b60046040517fef356d7a000000000000000000000000000000000000000000000000000000008152fdfea26469706673582212202359e3ddbb19d82e21a3ac6f2af2942cb384f157a832b656ef265ddfd1e9389064736f6c634300081500330000000000000000000000005f354319704dcbeb487b44762621dd8b0b30d5b7000000000000000000000000f29f5fc83c9310c887efce9d68cae1f046b6511b", + "nonce": "0x2" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0x3c553461a9c28DbCc81B9f7fA8281d70D0d18098", + "function": "manageOperatorPrivilege(address,bool)", + "arguments": [ + "0xf29F5fc83c9310c887EFce9D68Cae1F046B6511B", + "true" + ], + "transaction": { + "type": "0x00", + "from": "0xf29f5fc83c9310c887efce9d68cae1f046b6511b", + "to": "0x3c553461a9c28dbcc81b9f7fa8281d70d0d18098", + "gas": "0x111af", + "value": "0x0", + "data": "0x2024cbc1000000000000000000000000f29f5fc83c9310c887efce9d68cae1f046b6511b0000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x3" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0x3c553461a9c28DbCc81B9f7fA8281d70D0d18098", + "function": "updateTokenWhitelist(address[],bool[])", + "arguments": [ + "[0x7EbeF2A4b1B09381Ec5B9dF8C5c6f2dBECA59c73, 0x18fB38404DADeE1727Be4b805c5b242B5413Fa40, 0x81A1f39f7394c4849E4261Aa02AaC73865d13774, 0xe03bA6851335D01d38Dd6087c46C26008D16aF92]", + "[true, true, true, true]" + ], + "transaction": { + "type": "0x00", + "from": "0xf29f5fc83c9310c887efce9d68cae1f046b6511b", + "to": "0x3c553461a9c28dbcc81b9f7fa8281d70d0d18098", + "gas": "0x2c59a", + "value": "0x0", + "data": "0x6fda538f000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000040000000000000000000000007ebef2a4b1b09381ec5b9df8c5c6f2dbeca59c7300000000000000000000000018fb38404dadee1727be4b805c5b242b5413fa4000000000000000000000000081a1f39f7394c4849e4261aa02aac73865d13774000000000000000000000000e03ba6851335d01d38dd6087c46c26008d16af9200000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x4" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [ + "src/libraries/OrderEngine.sol:OrderEngine:0x4822f84ded2f60d2cbf0e353ab51b7b5d2e89935" + ], + "pending": [], + "returns": {}, + "timestamp": 1712127996, + "chain": 1890, + "multi": false, + "commit": "96d70ed" +} \ No newline at end of file diff --git a/broadcast/deployOrderEngine.s.sol/1890/run-1712128512.json b/broadcast/deployOrderEngine.s.sol/1890/run-1712128512.json new file mode 100644 index 0000000..76afca7 --- /dev/null +++ b/broadcast/deployOrderEngine.s.sol/1890/run-1712128512.json @@ -0,0 +1,120 @@ +{ + "transactions": [ + { + "hash": "0xb81b71950d97fe692ba0cbfc8322d91b45139daf690d043258f2a7414a75d38f", + "transactionType": "CREATE", + "contractName": "OrderEngine", + "contractAddress": "0x4822f84DED2f60D2cbF0e353ab51b7B5D2e89935", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xf29f5fc83c9310c887efce9d68cae1f046b6511b", + "gas": "0xd7c66", + "data": "0x6080806040523461001a57610b5b9081610020823930815050f35b600080fdfe608060405260048036101561001357600080fd5b60003560e01c90816321cd19a91461069f5781634416e986146104d857816395de97cc146104b7578163b4c07547146100d557508063b91611f41461007c5763c3c1f2ec1461006157600080fd5b602061007461006f3661077e565b610985565b604051908152f35b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d05760206040517fb91209a767a8178c503c992a2db0dd232393048d748c43a04d40fcccacc0df008152f35b600080fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d05780359067ffffffffffffffff82116100d057366023830112156100d05781602461012e93369301359101610895565b60606101c060405161013f8161082d565b60008152600060208201526000604082015260008382015260006080820152600060a0820152600060c0820152600060e0820152600061010082015260006101208201526000610140820152600061016082015282610180820152826101a082015201526101e0818051810103126100d05760208101516040820151916060810151608082015160a08301516101d760c08501610b04565b6101e360e08601610b04565b6101f06101008701610b04565b6101fd6101208801610b04565b9161020b6101408901610b04565b936101608901519586151587036100d0576101808a0151976101a08b0151996101c08c01519b6101e001519c6040519b60208d015260208c5261024d8c610879565b6040519c60208e015260208d526102638d610879565b6040519d60208f01528d6020815261027a90610879565b6040519e8f916102898361082d565b825260208201526040015260608d015260808c015273ffffffffffffffffffffffffffffffffffffffff1660a08b015273ffffffffffffffffffffffffffffffffffffffff1660c08a015273ffffffffffffffffffffffffffffffffffffffff1660e089015273ffffffffffffffffffffffffffffffffffffffff1661010088015273ffffffffffffffffffffffffffffffffffffffff1661012087015215156101408601526101608501526101808401526101a08301526101c082015260405180916020825280516020830152602081015160408301526040810151606083015260608101516080830152608081015160a083015260a081015173ffffffffffffffffffffffffffffffffffffffff1660c083015260c081015173ffffffffffffffffffffffffffffffffffffffff1660e083015260e081015173ffffffffffffffffffffffffffffffffffffffff1661010083015261010081015173ffffffffffffffffffffffffffffffffffffffff1661012083015261012081015173ffffffffffffffffffffffffffffffffffffffff1661014083015261014081015115156101608301526101608101516101808301526101808101516101a083016101e09052610200830161045c916107cf565b906101a08101517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09283858203016101c0860152610499916107cf565b906101c0015191838203016101e08401526104b3916107cf565b0390f35b60206104cd60a06104c73661077e565b01610906565b3b1515604051908152f35b6104e13661077e565b6104ed60a08201610906565b6104f960c08301610906565b61050560e08401610906565b9061016061010094610518868201610906565b9361012090610528828401610906565b9061014091610538838601610927565b9361055161054a610180880188610934565b3691610895565b602081519101209761056a61054a6101a0890189610934565b602081519101209961058361054a6101c08a018a610934565b602081519101209b6040519d8e918a35602084015260208b0135604084015260408b0135606084015260608b0135608084015260808b013560a084015273ffffffffffffffffffffffffffffffffffffffff978880968180941660c08701521660e08501521691015216908b0152169088015215158287015201356101808501526101a08401526101c08301526101e09081830152815261020081019181831067ffffffffffffffff84111761067157507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0090826040526020835261066c6102208201826107cf565b030190f35b6041907f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6040813601126100d057813567ffffffffffffffff918282116100d0576101e09082360301126100d0576106f5908301610985565b60405160208101917f1901000000000000000000000000000000000000000000000000000000000000835260243560228301526042820152604281526080810192818410908411176107505760209350826040525190208152f35b6041847f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc906020828201126100d0576004359167ffffffffffffffff83116100d057826101e0920301126100d05760040190565b919082519283825260005b8481106108195750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b6020818301810151848301820152016107da565b6101e0810190811067ffffffffffffffff82111761084a57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040810190811067ffffffffffffffff82111761084a57604052565b92919267ffffffffffffffff9182811161084a5760405192601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011684019081118482101761084a576040528294818452818301116100d0578281602093846000960137010152565b3573ffffffffffffffffffffffffffffffffffffffff811681036100d05790565b3580151581036100d05790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156100d0570180359067ffffffffffffffff82116100d0576020019181360383136100d057565b61099160a08201610906565b9061099e60c08201610906565b6109aa60e08301610906565b90610160610100936109bd858201610906565b92610120956109cd878401610906565b90610140916109dd838601610927565b92610180946109f161054a87890189610934565b6020815191012098610a0a61054a6101a08a018a610934565b602081519101209a610a2361054a6101c08b018b610934565b602081519101209c6040519e8f927fb91209a767a8178c503c992a2db0dd232393048d748c43a04d40fcccacc0df0060208501528b35604085015260208c0135606085015260408c0135608085015260608c013560a085015260808c013560c085015273ffffffffffffffffffffffffffffffffffffffff988980978180951660e088015216908501521691015216908b0152168489015215159087015201356101a08501526101c08401526101e083015261020090818301528152610220810181811067ffffffffffffffff82111761084a576040526020815191012090565b519073ffffffffffffffffffffffffffffffffffffffff821682036100d05756fea26469706673582212201805f314460b1a5374bb253f72f024bdc8ea21cc2e77073b1164f84307a2015264736f6c63430008150033", + "nonce": "0x0" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf579de2a4170d4d9d326d60042333e1ed1460ea74fffb1412ff65d1c996fa1bd", + "transactionType": "CREATE", + "contractName": "Predicates", + "contractAddress": "0x5F354319704dCBeb487b44762621DD8B0b30D5B7", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xf29f5fc83c9310c887efce9d68cae1f046b6511b", + "gas": "0x5dd9f", + "value": "0x0", + "data": "0x6080806040523461001657610464908161001c8239f35b600080fdfe604060808152600436101561001357600080fd5b6000803560e01c80633d303c92146102265780634f38e2b8146101f55780636fe7b0ba146101c457806374261145146101a8578063bf15fcd814610157578063bf797959146100dd578063bfa75143146100b45763ca4ece221461007657600080fd5b346100b15760206100948361008a366102e9565b9093919330610408565b819391936100a7575b5050519015158152f35b109150838061009d565b80fd5b5090346100d9576020906100d06100ca366102e9565b916103a8565b90519015158152f35b5080fd5b5090346100d95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d9576004359167ffffffffffffffff83116100b1575061013c6101356020933690600401610247565b9030610408565b8192919261014e575b50519015158152f35b15915038610145565b50346100b1575061017061016a3661027a565b91610408565b901561017f5760209151908152f35b600482517f1f1b8f61000000000000000000000000000000000000000000000000000000008152fd5b5090346100d9576020906100d06101be366102e9565b9161034f565b50346100b15760206101d98361008a366102e9565b819391936101eb575050519015158152f35b149150838061009d565b50346100b157602061020a8361008a366102e9565b8193919361021c575050519015158152f35b119150838061009d565b50346100b1575061023961016a3661027a565b825191151582526020820152f35b9181601f840112156102755782359167ffffffffffffffff8311610275576020838186019501011161027557565b600080fd5b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126102755760043573ffffffffffffffffffffffffffffffffffffffff8116810361027557916024359067ffffffffffffffff8211610275576102e591600401610247565b9091565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261027557600435916024359067ffffffffffffffff8211610275576102e591600401610247565b90939293848311610275578411610275578101920390565b9290919260005b63ffffffff821690811561039d5761013582610373928888610337565b81610392575b50610388579060201c90610356565b5050915050600190565b600191501438610379565b505050915050600090565b92909192600090815b63ffffffff82169081156103fc57610135826103ce928989610337565b90159081156103f0575b506103e7579060201c906103b1565b50509150915090565b600191501415386103d8565b50505050915050600190565b916000906020928294826040519283375afa60203d1416918261042757565b600051915056fea26469706673582212200458f875fadeeb52c1e054aa965d8292bed98c8059d7cbdeadebad7fe2b4b8e364736f6c63430008150033", + "nonce": "0x1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x7e5dfabad0685dbdab4f8a5e51917b89f053e3d44f0ae884442d3d93fbc79066", + "transactionType": "CREATE", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0x3c553461a9c28DbCc81B9f7fA8281d70D0d18098", + "function": null, + "arguments": [ + "0x5F354319704dCBeb487b44762621DD8B0b30D5B7", + "0xf29F5fc83c9310c887EFce9D68Cae1F046B6511B" + ], + "transaction": { + "type": "0x00", + "from": "0xf29f5fc83c9310c887efce9d68cae1f046b6511b", + "gas": "0x32cee2", + "value": "0x0", + "data": "0x61014034620002a6576001600160401b0362002e93601f38829003908101601f191684019083821185831017620002905780859160409485948552833981010312620002a65782516001600160a01b039384821691829003620002a6576020015190848216808303620002a6578351906200007a82620002ab565b601d825260208201957f456c656b7472696b204c696d6974204f726465722050726f746f636f6c0000008752600260208751620000b781620002ab565b828152019761763160f01b8952600160005560018060a01b031994858354168355600154338782161760015589519b3391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a351902097208760e05261010098818a524660a05260208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f998a84528983015260608201524660808201523060a082015260a0815260c08101928184109084111762000290578288525190206080523060c0526101209687528315801562000287575b620002785750600480548316919091179055600380549091169190911790558151600081526001600160a01b03821660208201527f1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc9162000234917f649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed090604090a18351600081526001600160a01b0390911660208201529081906040820190565b0390a15190612bcb9283620002c8843960805183611e4a015260a05183611f45015260c05183611e1b015260e05183611e9901525182611ebf01525181611e760152f35b63d92e233d60e01b8152600490fd5b50811562000193565b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620002905760405256fe610180604052600436101561001357600080fd5b60003560e01c80630610f4a714611bfc57806315169dec14611bbc5780632024cbc114611ac95780633644e51514611aa65780633c3efab414611a7f5780635f2a6451146119c457806369328dec1461192b5780636d70f7ae146118ec5780636fda538f146117a5578063715018a61461172957806379ba5097146116235780638da5cb5b146115fc5780638efede3d1461152a57806390d6e14c14611458578063ab37f48614611419578063c2ee3a08146113f6578063c415b95c146113cf578063cf0f969d146113a3578063e30c39781461137c578063f2fde38b146112fa5763fe61e35c1461010457600080fd5b346104cc5760e06003193601126104cc5767ffffffffffffffff6004358181116104cc57610136903690600401611cac565b61016052610100526024358181116104cc57610156903690600401611cac565b60e052610140526044358181116104cc57610175903690600401611cac565b60c052610120526064358181116104cc57610194903690600401611cac565b916084358181116104cc576101ad903690600401611c47565b939060a4358381116104cc576101c7903690600401611cac565b95909360c435116104cc576101e13660c435600401611cac565b93909533600052600760205260ff60406000205416156112ca5760026000541461126c57600260005561016051156112425760e0516101605114801590611234575b8015611228575b6108b85760005b6101605181106108e25750505060148110156104d1575b50505050505060005b610160518110610262576001600055005b610273816101605161010051611d80565b906102848160e05161014051611d4f565b356102958260c05161012051611d4f565b35906102a08461240e565b90670de0b6b3a7640000946103236001600160a01b036102c36101208401611d5f565b166102d060e08401611d5f565b906001600160a01b03604051927fa9059cbb00000000000000000000000000000000000000000000000000000000602085015216602483015288870460448301526044825261031e82611f7f565b612917565b826000526006602052604060002054956101c0820160146103448285611dc0565b905010156103cf575b506001600160a01b037f2b15903b1f1516345ba547119efb6a90ccb8012f1803cc933c0a28b9291a5fef9360019884839461038d61010060c09801611d5f565b998161039c6101208501611d5f565b956080956040519c8d5260208d01520460408b0152046060890152803582890152013560a087015216941692a301610251565b6103df6103e59184959394611dc0565b90612b33565b6103f08394936127cd565b6103fc60a08701611d5f565b936001600160a01b0381163b156104cc578560006001600160a01b038b61045f8f96849886988f8c906040519e8f9c8d9b8c997fb6e1471a000000000000000000000000000000000000000000000000000000008b520493049160048901612796565b0393165af19081156104c0576001987f2b15903b1f1516345ba547119efb6a90ccb8012f1803cc933c0a28b9291a5fef9560c0956001600160a01b039586956104b1575b50945094509850935061034d565b6104ba90611f6b565b386104a3565b6040513d6000823e3d90fd5b600080fd5b6104da91612b33565b90949160805293946104ed6080516127cd565b8281036108b85760005b81811061083557506001600160a01b03608051163b156104cc5760405160a0527f2499e3a20000000000000000000000000000000000000000000000000000000060a0515260c460a0510160c0600460a051015261016051905260e460a0510160e46101605160051b60a05101019061010051906000905b61016051821061068b575050506105bd6105a160209260031960a051820301602460a051015260e0516101405161286b565b60031960a051820301604460a051015260c0516101205161286b565b60031960a051820301606460a05101528281520193906000905b808210610658575050506000949261061f926106029260031960a051840301608460a051015261286b565b60031960a05182030160a460a051015260a0519360a05193611fe9565b0360a051836001600160a01b03608051165af180156104c057610648575b388080808080610248565b61065360a051611f6b565b61063d565b9091948535906001600160a01b03821682036104cc57602080916001600160a01b036001941681520196019201906105d7565b9091927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c60a05182030182527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe2161010051360301843512156104cc5760208061082860019361010051883501906108096107ed6101e084358452868501358785015260408501356040850152606080860135908501526080808601359085015260a06001600160a01b03610740828801611c8b565b16908501526001600160a01b0361075960c08701611c8b565b1660c08501526001600160a01b0361077360e08701611c8b565b1660e08501526101006001600160a01b0361078f828801611c8b565b16908501526101206001600160a01b036107aa828801611c8b565b16908501526101406107bd818701611c9f565b151590850152610160808601359085015261018090806107df8388018861281b565b929093870152850191611fe9565b6101a06107fc8186018661281b565b9185840390860152611fe9565b9161081a6101c0918281019061281b565b929091818503910152611fe9565b950192019201909161056f565b610840818387611d4f565b35906001600160a01b03821682036104cc576108b2600192610863838888611d4f565b3590604051917fa9059cbb0000000000000000000000000000000000000000000000000000000060208401526001600160a01b0360805116602484015260448301526044825261031e82611f7f565b016104f7565b60046040517ffc235960000000000000000000000000000000000000000000000000000000008152fd5b6108f3816101605161010051611d80565b906109048160e05161014051611d4f565b35916109168260c05161012051611d4f565b3592858310156111f95761092f8360051b860186611dc0565b90918592819661093e8661240e565b92602087013542116111c8576060870135159081156111bb575b81156111b2575b5080156111aa575b611180576001600160a01b036109806101208801611d5f565b16600052600560205260ff60406000205416158015611157575b61112d576109ab6101008701611d5f565b6001600160a01b03806109c16101208a01611d5f565b16911614611103576001600160a01b036109dd60a08801611d5f565b161580156110e6575b80156110c9575b80156110ad575b6110835760c086016001600160a01b03610a0d82611d5f565b1615159081611066575b5061103c5782600052600660205260406000205460408701351461101257610a426101408701611d73565b15610fd25750670de0b6b3a76400008702878104670de0b6b3a76400001488151715610f795784610a72916124fd565b670de0b6b3a76400006040870135818102918183041490151715610f7957610a9f906060880135906124fd565b10610fa8578160005260066020526040600020805490670de0b6b3a764000089048201809211610f79575560808501358015670de0b6b3a76400008904808302839004141715610f7957610b0490604087013590670de0b6b3a76400008a04026124fd565b826000526006602052604086013560406000205411610f4f57670de0b6b3a7640000809195049704925b610b706020610b3d3689612182565b604051809381927f95de97cc0000000000000000000000000000000000000000000000000000000083526004830161230b565b0381734822f84ded2f60d2cbf0e353ab51b7b5d2e899355af49081156104c057600091610f15575b5015610ead57610bfe916020916001600160a01b03610bb960a08a01611d5f565b16906040518095819482937f1626ba7e000000000000000000000000000000000000000000000000000000008452896004850152604060248501526044840191611fe9565b03915afa9081156104c057600091610e32575b507fffffffff000000000000000000000000000000000000000000000000000000007f1626ba7e00000000000000000000000000000000000000000000000000000000911603610e08575b6101808401610c6b8186611dc0565b9050610dc0575b506101a084016014610c848287611dc0565b90501015610d01575b505060019450610cc0906001600160a01b03610cac6101008601611d5f565b1690610cba60a08601611d5f565b916128a8565b80610cce575b505001610231565b6001600160a01b03610ce6610100610cfa9401611d5f565b16906001600160a01b0360045416916128a8565b3880610cc6565b6103df610d0e9186611dc0565b909192610d1a846127cd565b610d2660a08801611d5f565b91816000526006602052604060002054936001600160a01b0386163b156104cc5786946040519b8c9687967f1ad047d20000000000000000000000000000000000000000000000000000000088526004880196610d8297612796565b03916001600160a01b031691815a6000948591f19081156104c057600195610cc092610db1575b819250610c8d565b610dba90611f6b565b38610da9565b610dcd610dd39186611dc0565b90612028565b15610dde5738610c72565b60046040517fb6629c02000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b90506020813d602011610ea5575b81610e4d60209383611f9b565b810103126104cc57517fffffffff00000000000000000000000000000000000000000000000000000000811681036104cc577fffffffff00000000000000000000000000000000000000000000000000000000610c11565b3d9150610e40565b610ebf610ecd92610ec592369161212d565b836126cf565b919091612536565b6001600160a01b0380610ee260a08801611d5f565b1691160315610c5c5760046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b90506020813d602011610f47575b81610f3060209383611f9b565b810103126104cc57610f4190611fdc565b38610b98565b3d9150610f23565b60046040517f17015bc1000000000000000000000000000000000000000000000000000000008152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60046040517fa0de07d3000000000000000000000000000000000000000000000000000000008152fd5b935091955082606085013511610fa857604084013591670de0b6b3a764000060808601359483600052600660205260408701356040600020550496610b2e565b60046040517fca92fdbb000000000000000000000000000000000000000000000000000000008152fd5b60046040517fd4dfdafe000000000000000000000000000000000000000000000000000000008152fd5b90506001600160a01b0361107a3392611d5f565b16141538610a17565b60046040517fd92e233d000000000000000000000000000000000000000000000000000000008152fd5b506001600160a01b036110c260e08801611d5f565b16156109f4565b506001600160a01b036110df6101008801611d5f565b16156109ed565b506001600160a01b036110fc6101208801611d5f565b16156109e6565b60046040517fdd807227000000000000000000000000000000000000000000000000000000008152fd5b60046040517ff84835a0000000000000000000000000000000000000000000000000000000008152fd5b506001600160a01b0361116d6101008801611d5f565b1660005260ff604060002054161561099a565b60046040517f1f2a2005000000000000000000000000000000000000000000000000000000008152fd5b508015610967565b9050153861095f565b6040880135159150610958565b602484604051907f2e775cae0000000000000000000000000000000000000000000000000000000082526004820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b508160c051141561022a565b5060c05160e0511415610223565b60046040517f521299a9000000000000000000000000000000000000000000000000000000008152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b60246040517fc0ae66ad000000000000000000000000000000000000000000000000000000008152336004820152fd5b346104cc5760206003193601126104cc57611313611c75565b61131b611cdd565b6001600160a01b0380911690817fffffffffffffffffffffffff00000000000000000000000000000000000000006002541617600255600154167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700600080a3005b346104cc5760006003193601126104cc5760206001600160a01b0360025416604051908152f35b346104cc5760206003193601126104cc5760043560005260066020526020604060002054604051908152f35b346104cc5760006003193601126104cc5760206001600160a01b0360045416604051908152f35b346104cc5760006003193601126104cc576020604051670de0b6b3a76400008152f35b346104cc5760206003193601126104cc576001600160a01b0361143a611c75565b166000526005602052602060ff604060002054166040519015158152f35b346104cc5760206003193601126104cc576004356001600160a01b038082168092036104cc57611486611cdd565b8115611083576003549081169082821461150057604080516001600160a01b03938416815292841660208401527fffffffffffffffffffffffff0000000000000000000000000000000000000000927f1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc9190a11617600355005b60046040517fea0f8928000000000000000000000000000000000000000000000000000000008152fd5b346104cc5760206003193601126104cc57611543611c75565b61154b611cdd565b6001600160a01b0390818116918215611083576004549081168381146115d257604080516001600160a01b0392831681529390911660208401527fffffffffffffffffffffffff0000000000000000000000000000000000000000927f649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed09190a11617600455005b60046040517fa133328a000000000000000000000000000000000000000000000000000000008152fd5b346104cc5760006003193601126104cc5760206001600160a01b0360015416604051908152f35b346104cc5760006003193601126104cc576002546001600160a01b0333818316036116a5577fffffffffffffffffffffffff00000000000000000000000000000000000000008092166002556001549133908316176001553391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152fd5b346104cc5760006003193601126104cc57611742611cdd565b60006001600160a01b037fffffffffffffffffffffffff00000000000000000000000000000000000000008060025416600255600154908116600155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346104cc5760406003193601126104cc5767ffffffffffffffff6004358181116104cc576117d7903690600401611cac565b916024359081116104cc576117f0903690600401611cac565b6117f8611cdd565b8315611242578084036108b85760005b84811061181157005b6001600160a01b03908161182e611829838989611d4f565b611d5f565b1615611083576001917f49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e27441761186b611866848789611d4f565b611d73565b8261187a611829868c8c611d4f565b166000526118bd6020916005835260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b6118cb611829858b8b611d4f565b926118da61186686898b611d4f565b9360405194151585521692a201611808565b346104cc5760206003193601126104cc576001600160a01b0361190d611c75565b166000526007602052602060ff604060002054166040519015158152f35b346104cc5760606003193601126104cc57611944611c75565b604435906001600160a01b03908183168093036104cc57611963611cdd565b1690811580156119bc575b611083576119ba91604051917fa9059cbb000000000000000000000000000000000000000000000000000000006020840152602483015260243560448301526044825261031e82611f7f565b005b50801561196e565b346104cc576119d236611c14565b6119de60a08201611d5f565b6001600160a01b0333911603611a55576119f78161240e565b80600052600660205260408060002054920135918281146110125760407f87b5f0afdc3a118b68246141c5bd338672ab3e901be636e27116238d284de6ac918151908482526020820152a16000526006602052604060002055600080f35b60046040517f4ca88867000000000000000000000000000000000000000000000000000000008152fd5b346104cc5760006003193601126104cc5760206001600160a01b0360035416604051908152f35b346104cc5760006003193601126104cc576020611ac1611e11565b604051908152f35b346104cc5760406003193601126104cc57611ae2611c75565b60243590811515908183036104cc576001600160a01b0390611b02611cdd565b16918215611083578260005260076020528160ff60406000205416151514611b92577fcba86444cdc912f5fa5f53c20361b3517933eb181876b3f4a0d47478c6a3039b91611b89602092856000526007845260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b604051908152a2005b60046040517f5b2625c0000000000000000000000000000000000000000000000000000000008152fd5b346104cc5760206003193601126104cc5760043567ffffffffffffffff81116104cc57611bf2610dcd6020923690600401611c47565b6040519015158152f35b346104cc576020611ac1611c0f36611c14565b61240e565b600319906020828201126104cc576004359167ffffffffffffffff83116104cc57826101e0920301126104cc5760040190565b9181601f840112156104cc5782359167ffffffffffffffff83116104cc57602083818601950101116104cc57565b600435906001600160a01b03821682036104cc57565b35906001600160a01b03821682036104cc57565b359081151582036104cc57565b9181601f840112156104cc5782359167ffffffffffffffff83116104cc576020808501948460051b0101116104cc57565b6001600160a01b03600154163303611cf157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b91908110156111f95760051b0190565b356001600160a01b03811681036104cc5790565b3580151581036104cc5790565b91908110156111f95760051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe21813603018212156104cc570190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156104cc570180359067ffffffffffffffff82116104cc576020019181360383136104cc57565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016301480611f42575b15611e6c577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117611f135760405251902090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b507f00000000000000000000000000000000000000000000000000000000000000004614611e43565b67ffffffffffffffff8111611f1357604052565b6080810190811067ffffffffffffffff821117611f1357604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611f1357604052565b519081151582036104cc57565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b90612080906001600160a01b036003541692604093849283518095819482937f3d303c920000000000000000000000000000000000000000000000000000000084528560048501528760248501526044840191611fe9565b03915afa9081156120e85760009283926120a8575b5050816120a0575090565b600191501490565b9080939250813d83116120e1575b6120c08183611f9b565b810103126120de575060206120d482611fdc565b9101513880612095565b80fd5b503d6120b6565b82513d6000823e3d90fd5b67ffffffffffffffff8111611f1357601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192612139826120f3565b916121476040519384611f9b565b8294818452818301116104cc578281602093846000960137010152565b9080601f830112156104cc5781602061217f9335910161212d565b90565b9190916101e09081818503126104cc576040519182019067ffffffffffffffff9183811083821117611f1357604052829481358452602082013560208501526040820135604085015260608201356060850152608082013560808501526121eb60a08301611c8b565b60a08501526121fc60c08301611c8b565b60c085015261220d60e08301611c8b565b60e0850152610100612220818401611c8b565b90850152610120612232818401611c8b565b90850152610140612244818401611c9f565b908501526101608083013590850152610180808301358481116104cc578261226d918501612164565b908501526101a0808301358481116104cc578261228b918501612164565b908501526101c092838301359081116104cc576122a89201612164565b910152565b919082519283825260005b8481106122f75750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b6020818301810151848301820152016122b8565b9061217f916020815281516020820152602082015160408201526040820151606082015260608201516080820152608082015160a082015260a08201516001600160a01b0380911660c08301528060c08401511660e083015260e0830151816101009116818401528301518161012091168184015283015190610140911681830152820151610160901515818301528201516101809081830152820151906101e06123c36101a09382858501526102008401906122ad565b928401516123fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0946101c0928686830301848701526122ad565b94015192828503019101526122ad565b602061241e612451923690612182565b604051809381927fc3c1f2ec0000000000000000000000000000000000000000000000000000000083526004830161230b565b0381734822f84ded2f60d2cbf0e353ab51b7b5d2e899355af49081156104c0576000916124cc575b50612482611e11565b906040519060208201927f1901000000000000000000000000000000000000000000000000000000000000845260228301526042820152604281526124c681611f7f565b51902090565b906020823d82116124f5575b816124e560209383611f9b565b810103126120de57505138612479565b3d91506124d8565b8115612507570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60058110156126a057806125475750565b600181036125ad5760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152fd5b600281036126135760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152fd5b60031461261c57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9060418151146000146126fd576126f9916020820151906060604084015193015160001a90612707565b9091565b5050600090600290565b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831161278a5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561277d5781516001600160a01b03811615612777579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b926001600160a01b0361217f98969360c0969386521660208501526040840152606083015260808201528160a08201520191611fe9565b6001600160a01b0316308114908115612812575b506127e857565b60046040517f8a5039c1000000000000000000000000000000000000000000000000000000008152fd5b905015386127e1565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156104cc57016020813591019167ffffffffffffffff82116104cc5781360383136104cc57565b90918281527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83116104cc5760209260051b809284830137010190565b91906001600160a01b03604051927f23b872dd00000000000000000000000000000000000000000000000000000000602085015216602483015230604483015260648201526064815260a081019181831067ffffffffffffffff841117611f135761291592604052612917565b565b6001600160a01b031690604051604081019080821067ffffffffffffffff831117611f13576129a8916040526020938482527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564858301526000808587829751910182855af13d15612a5f573d9161298d836120f3565b9261299b6040519485611f9b565b83523d868885013e612a63565b908151806129b7575b50505050565b828491810103126120de5750816129ce9101611fdc565b156129db578080806129b1565b608490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b6060915b91929015612ade5750815115612a77575090565b3b15612a805790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b825190915015612af15750805190602001fd5b612b2f906040519182917f08c379a00000000000000000000000000000000000000000000000000000000083526020600484015260248301906122ad565b0390fd5b9160148210612b6b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec6014843560601c9401920190565b60046040517fef356d7a000000000000000000000000000000000000000000000000000000008152fdfea26469706673582212202359e3ddbb19d82e21a3ac6f2af2942cb384f157a832b656ef265ddfd1e9389064736f6c634300081500330000000000000000000000005f354319704dcbeb487b44762621dd8b0b30d5b7000000000000000000000000f29f5fc83c9310c887efce9d68cae1f046b6511b", + "nonce": "0x2" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf9047d2a51c09e90a8dd93131ef38cccaec797f3c39afd0aaebb00b719daca69", + "transactionType": "CALL", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0x3c553461a9c28DbCc81B9f7fA8281d70D0d18098", + "function": "manageOperatorPrivilege(address,bool)", + "arguments": [ + "0xf29F5fc83c9310c887EFce9D68Cae1F046B6511B", + "true" + ], + "transaction": { + "type": "0x00", + "from": "0xf29f5fc83c9310c887efce9d68cae1f046b6511b", + "to": "0x3c553461a9c28dbcc81b9f7fa8281d70d0d18098", + "gas": "0x111af", + "value": "0x0", + "data": "0x2024cbc1000000000000000000000000f29f5fc83c9310c887efce9d68cae1f046b6511b0000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x3" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xde0e777d98382931ee7dc5e80d9c26b2958417b1b42f1a2dda092d0c1d94a67e", + "transactionType": "CALL", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0x3c553461a9c28DbCc81B9f7fA8281d70D0d18098", + "function": "updateTokenWhitelist(address[],bool[])", + "arguments": [ + "[0x7EbeF2A4b1B09381Ec5B9dF8C5c6f2dBECA59c73, 0x18fB38404DADeE1727Be4b805c5b242B5413Fa40, 0x81A1f39f7394c4849E4261Aa02AaC73865d13774, 0xe03bA6851335D01d38Dd6087c46C26008D16aF92]", + "[true, true, true, true]" + ], + "transaction": { + "type": "0x00", + "from": "0xf29f5fc83c9310c887efce9d68cae1f046b6511b", + "to": "0x3c553461a9c28dbcc81b9f7fa8281d70d0d18098", + "gas": "0x2c59a", + "value": "0x0", + "data": "0x6fda538f000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000040000000000000000000000007ebef2a4b1b09381ec5b9df8c5c6f2dbeca59c7300000000000000000000000018fb38404dadee1727be4b805c5b242b5413fa4000000000000000000000000081a1f39f7394c4849e4261aa02aac73865d13774000000000000000000000000e03ba6851335d01d38dd6087c46c26008d16af9200000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x4" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [ + "src/libraries/OrderEngine.sol:OrderEngine:0x4822f84ded2f60d2cbf0e353ab51b7b5d2e89935" + ], + "pending": [ + "0xb81b71950d97fe692ba0cbfc8322d91b45139daf690d043258f2a7414a75d38f", + "0xf579de2a4170d4d9d326d60042333e1ed1460ea74fffb1412ff65d1c996fa1bd", + "0x7e5dfabad0685dbdab4f8a5e51917b89f053e3d44f0ae884442d3d93fbc79066", + "0xf9047d2a51c09e90a8dd93131ef38cccaec797f3c39afd0aaebb00b719daca69", + "0xde0e777d98382931ee7dc5e80d9c26b2958417b1b42f1a2dda092d0c1d94a67e" + ], + "returns": {}, + "timestamp": 1712128512, + "chain": 1890, + "multi": false, + "commit": "96d70ed" +} \ No newline at end of file diff --git a/broadcast/deployOrderEngine.s.sol/1890/run-1712128519.json b/broadcast/deployOrderEngine.s.sol/1890/run-1712128519.json new file mode 100644 index 0000000..f63197c --- /dev/null +++ b/broadcast/deployOrderEngine.s.sol/1890/run-1712128519.json @@ -0,0 +1,309 @@ +{ + "transactions": [ + { + "hash": "0xb81b71950d97fe692ba0cbfc8322d91b45139daf690d043258f2a7414a75d38f", + "transactionType": "CREATE", + "contractName": "OrderEngine", + "contractAddress": "0x4822f84DED2f60D2cbF0e353ab51b7B5D2e89935", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xf29f5fc83c9310c887efce9d68cae1f046b6511b", + "gas": "0xd7c66", + "data": "0x6080806040523461001a57610b5b9081610020823930815050f35b600080fdfe608060405260048036101561001357600080fd5b60003560e01c90816321cd19a91461069f5781634416e986146104d857816395de97cc146104b7578163b4c07547146100d557508063b91611f41461007c5763c3c1f2ec1461006157600080fd5b602061007461006f3661077e565b610985565b604051908152f35b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d05760206040517fb91209a767a8178c503c992a2db0dd232393048d748c43a04d40fcccacc0df008152f35b600080fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d05780359067ffffffffffffffff82116100d057366023830112156100d05781602461012e93369301359101610895565b60606101c060405161013f8161082d565b60008152600060208201526000604082015260008382015260006080820152600060a0820152600060c0820152600060e0820152600061010082015260006101208201526000610140820152600061016082015282610180820152826101a082015201526101e0818051810103126100d05760208101516040820151916060810151608082015160a08301516101d760c08501610b04565b6101e360e08601610b04565b6101f06101008701610b04565b6101fd6101208801610b04565b9161020b6101408901610b04565b936101608901519586151587036100d0576101808a0151976101a08b0151996101c08c01519b6101e001519c6040519b60208d015260208c5261024d8c610879565b6040519c60208e015260208d526102638d610879565b6040519d60208f01528d6020815261027a90610879565b6040519e8f916102898361082d565b825260208201526040015260608d015260808c015273ffffffffffffffffffffffffffffffffffffffff1660a08b015273ffffffffffffffffffffffffffffffffffffffff1660c08a015273ffffffffffffffffffffffffffffffffffffffff1660e089015273ffffffffffffffffffffffffffffffffffffffff1661010088015273ffffffffffffffffffffffffffffffffffffffff1661012087015215156101408601526101608501526101808401526101a08301526101c082015260405180916020825280516020830152602081015160408301526040810151606083015260608101516080830152608081015160a083015260a081015173ffffffffffffffffffffffffffffffffffffffff1660c083015260c081015173ffffffffffffffffffffffffffffffffffffffff1660e083015260e081015173ffffffffffffffffffffffffffffffffffffffff1661010083015261010081015173ffffffffffffffffffffffffffffffffffffffff1661012083015261012081015173ffffffffffffffffffffffffffffffffffffffff1661014083015261014081015115156101608301526101608101516101808301526101808101516101a083016101e09052610200830161045c916107cf565b906101a08101517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09283858203016101c0860152610499916107cf565b906101c0015191838203016101e08401526104b3916107cf565b0390f35b60206104cd60a06104c73661077e565b01610906565b3b1515604051908152f35b6104e13661077e565b6104ed60a08201610906565b6104f960c08301610906565b61050560e08401610906565b9061016061010094610518868201610906565b9361012090610528828401610906565b9061014091610538838601610927565b9361055161054a610180880188610934565b3691610895565b602081519101209761056a61054a6101a0890189610934565b602081519101209961058361054a6101c08a018a610934565b602081519101209b6040519d8e918a35602084015260208b0135604084015260408b0135606084015260608b0135608084015260808b013560a084015273ffffffffffffffffffffffffffffffffffffffff978880968180941660c08701521660e08501521691015216908b0152169088015215158287015201356101808501526101a08401526101c08301526101e09081830152815261020081019181831067ffffffffffffffff84111761067157507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0090826040526020835261066c6102208201826107cf565b030190f35b6041907f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6040813601126100d057813567ffffffffffffffff918282116100d0576101e09082360301126100d0576106f5908301610985565b60405160208101917f1901000000000000000000000000000000000000000000000000000000000000835260243560228301526042820152604281526080810192818410908411176107505760209350826040525190208152f35b6041847f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc906020828201126100d0576004359167ffffffffffffffff83116100d057826101e0920301126100d05760040190565b919082519283825260005b8481106108195750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b6020818301810151848301820152016107da565b6101e0810190811067ffffffffffffffff82111761084a57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040810190811067ffffffffffffffff82111761084a57604052565b92919267ffffffffffffffff9182811161084a5760405192601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011684019081118482101761084a576040528294818452818301116100d0578281602093846000960137010152565b3573ffffffffffffffffffffffffffffffffffffffff811681036100d05790565b3580151581036100d05790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156100d0570180359067ffffffffffffffff82116100d0576020019181360383136100d057565b61099160a08201610906565b9061099e60c08201610906565b6109aa60e08301610906565b90610160610100936109bd858201610906565b92610120956109cd878401610906565b90610140916109dd838601610927565b92610180946109f161054a87890189610934565b6020815191012098610a0a61054a6101a08a018a610934565b602081519101209a610a2361054a6101c08b018b610934565b602081519101209c6040519e8f927fb91209a767a8178c503c992a2db0dd232393048d748c43a04d40fcccacc0df0060208501528b35604085015260208c0135606085015260408c0135608085015260608c013560a085015260808c013560c085015273ffffffffffffffffffffffffffffffffffffffff988980978180951660e088015216908501521691015216908b0152168489015215159087015201356101a08501526101c08401526101e083015261020090818301528152610220810181811067ffffffffffffffff82111761084a576040526020815191012090565b519073ffffffffffffffffffffffffffffffffffffffff821682036100d05756fea26469706673582212201805f314460b1a5374bb253f72f024bdc8ea21cc2e77073b1164f84307a2015264736f6c63430008150033", + "nonce": "0x0" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf579de2a4170d4d9d326d60042333e1ed1460ea74fffb1412ff65d1c996fa1bd", + "transactionType": "CREATE", + "contractName": "Predicates", + "contractAddress": "0x5F354319704dCBeb487b44762621DD8B0b30D5B7", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xf29f5fc83c9310c887efce9d68cae1f046b6511b", + "gas": "0x5dd9f", + "value": "0x0", + "data": "0x6080806040523461001657610464908161001c8239f35b600080fdfe604060808152600436101561001357600080fd5b6000803560e01c80633d303c92146102265780634f38e2b8146101f55780636fe7b0ba146101c457806374261145146101a8578063bf15fcd814610157578063bf797959146100dd578063bfa75143146100b45763ca4ece221461007657600080fd5b346100b15760206100948361008a366102e9565b9093919330610408565b819391936100a7575b5050519015158152f35b109150838061009d565b80fd5b5090346100d9576020906100d06100ca366102e9565b916103a8565b90519015158152f35b5080fd5b5090346100d95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d9576004359167ffffffffffffffff83116100b1575061013c6101356020933690600401610247565b9030610408565b8192919261014e575b50519015158152f35b15915038610145565b50346100b1575061017061016a3661027a565b91610408565b901561017f5760209151908152f35b600482517f1f1b8f61000000000000000000000000000000000000000000000000000000008152fd5b5090346100d9576020906100d06101be366102e9565b9161034f565b50346100b15760206101d98361008a366102e9565b819391936101eb575050519015158152f35b149150838061009d565b50346100b157602061020a8361008a366102e9565b8193919361021c575050519015158152f35b119150838061009d565b50346100b1575061023961016a3661027a565b825191151582526020820152f35b9181601f840112156102755782359167ffffffffffffffff8311610275576020838186019501011161027557565b600080fd5b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126102755760043573ffffffffffffffffffffffffffffffffffffffff8116810361027557916024359067ffffffffffffffff8211610275576102e591600401610247565b9091565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261027557600435916024359067ffffffffffffffff8211610275576102e591600401610247565b90939293848311610275578411610275578101920390565b9290919260005b63ffffffff821690811561039d5761013582610373928888610337565b81610392575b50610388579060201c90610356565b5050915050600190565b600191501438610379565b505050915050600090565b92909192600090815b63ffffffff82169081156103fc57610135826103ce928989610337565b90159081156103f0575b506103e7579060201c906103b1565b50509150915090565b600191501415386103d8565b50505050915050600190565b916000906020928294826040519283375afa60203d1416918261042757565b600051915056fea26469706673582212200458f875fadeeb52c1e054aa965d8292bed98c8059d7cbdeadebad7fe2b4b8e364736f6c63430008150033", + "nonce": "0x1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x7e5dfabad0685dbdab4f8a5e51917b89f053e3d44f0ae884442d3d93fbc79066", + "transactionType": "CREATE", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0x3c553461a9c28DbCc81B9f7fA8281d70D0d18098", + "function": null, + "arguments": [ + "0x5F354319704dCBeb487b44762621DD8B0b30D5B7", + "0xf29F5fc83c9310c887EFce9D68Cae1F046B6511B" + ], + "transaction": { + "type": "0x00", + "from": "0xf29f5fc83c9310c887efce9d68cae1f046b6511b", + "gas": "0x32cee2", + "value": "0x0", + "data": "0x61014034620002a6576001600160401b0362002e93601f38829003908101601f191684019083821185831017620002905780859160409485948552833981010312620002a65782516001600160a01b039384821691829003620002a6576020015190848216808303620002a6578351906200007a82620002ab565b601d825260208201957f456c656b7472696b204c696d6974204f726465722050726f746f636f6c0000008752600260208751620000b781620002ab565b828152019761763160f01b8952600160005560018060a01b031994858354168355600154338782161760015589519b3391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a351902097208760e05261010098818a524660a05260208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f998a84528983015260608201524660808201523060a082015260a0815260c08101928184109084111762000290578288525190206080523060c0526101209687528315801562000287575b620002785750600480548316919091179055600380549091169190911790558151600081526001600160a01b03821660208201527f1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc9162000234917f649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed090604090a18351600081526001600160a01b0390911660208201529081906040820190565b0390a15190612bcb9283620002c8843960805183611e4a015260a05183611f45015260c05183611e1b015260e05183611e9901525182611ebf01525181611e760152f35b63d92e233d60e01b8152600490fd5b50811562000193565b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620002905760405256fe610180604052600436101561001357600080fd5b60003560e01c80630610f4a714611bfc57806315169dec14611bbc5780632024cbc114611ac95780633644e51514611aa65780633c3efab414611a7f5780635f2a6451146119c457806369328dec1461192b5780636d70f7ae146118ec5780636fda538f146117a5578063715018a61461172957806379ba5097146116235780638da5cb5b146115fc5780638efede3d1461152a57806390d6e14c14611458578063ab37f48614611419578063c2ee3a08146113f6578063c415b95c146113cf578063cf0f969d146113a3578063e30c39781461137c578063f2fde38b146112fa5763fe61e35c1461010457600080fd5b346104cc5760e06003193601126104cc5767ffffffffffffffff6004358181116104cc57610136903690600401611cac565b61016052610100526024358181116104cc57610156903690600401611cac565b60e052610140526044358181116104cc57610175903690600401611cac565b60c052610120526064358181116104cc57610194903690600401611cac565b916084358181116104cc576101ad903690600401611c47565b939060a4358381116104cc576101c7903690600401611cac565b95909360c435116104cc576101e13660c435600401611cac565b93909533600052600760205260ff60406000205416156112ca5760026000541461126c57600260005561016051156112425760e0516101605114801590611234575b8015611228575b6108b85760005b6101605181106108e25750505060148110156104d1575b50505050505060005b610160518110610262576001600055005b610273816101605161010051611d80565b906102848160e05161014051611d4f565b356102958260c05161012051611d4f565b35906102a08461240e565b90670de0b6b3a7640000946103236001600160a01b036102c36101208401611d5f565b166102d060e08401611d5f565b906001600160a01b03604051927fa9059cbb00000000000000000000000000000000000000000000000000000000602085015216602483015288870460448301526044825261031e82611f7f565b612917565b826000526006602052604060002054956101c0820160146103448285611dc0565b905010156103cf575b506001600160a01b037f2b15903b1f1516345ba547119efb6a90ccb8012f1803cc933c0a28b9291a5fef9360019884839461038d61010060c09801611d5f565b998161039c6101208501611d5f565b956080956040519c8d5260208d01520460408b0152046060890152803582890152013560a087015216941692a301610251565b6103df6103e59184959394611dc0565b90612b33565b6103f08394936127cd565b6103fc60a08701611d5f565b936001600160a01b0381163b156104cc578560006001600160a01b038b61045f8f96849886988f8c906040519e8f9c8d9b8c997fb6e1471a000000000000000000000000000000000000000000000000000000008b520493049160048901612796565b0393165af19081156104c0576001987f2b15903b1f1516345ba547119efb6a90ccb8012f1803cc933c0a28b9291a5fef9560c0956001600160a01b039586956104b1575b50945094509850935061034d565b6104ba90611f6b565b386104a3565b6040513d6000823e3d90fd5b600080fd5b6104da91612b33565b90949160805293946104ed6080516127cd565b8281036108b85760005b81811061083557506001600160a01b03608051163b156104cc5760405160a0527f2499e3a20000000000000000000000000000000000000000000000000000000060a0515260c460a0510160c0600460a051015261016051905260e460a0510160e46101605160051b60a05101019061010051906000905b61016051821061068b575050506105bd6105a160209260031960a051820301602460a051015260e0516101405161286b565b60031960a051820301604460a051015260c0516101205161286b565b60031960a051820301606460a05101528281520193906000905b808210610658575050506000949261061f926106029260031960a051840301608460a051015261286b565b60031960a05182030160a460a051015260a0519360a05193611fe9565b0360a051836001600160a01b03608051165af180156104c057610648575b388080808080610248565b61065360a051611f6b565b61063d565b9091948535906001600160a01b03821682036104cc57602080916001600160a01b036001941681520196019201906105d7565b9091927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c60a05182030182527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe2161010051360301843512156104cc5760208061082860019361010051883501906108096107ed6101e084358452868501358785015260408501356040850152606080860135908501526080808601359085015260a06001600160a01b03610740828801611c8b565b16908501526001600160a01b0361075960c08701611c8b565b1660c08501526001600160a01b0361077360e08701611c8b565b1660e08501526101006001600160a01b0361078f828801611c8b565b16908501526101206001600160a01b036107aa828801611c8b565b16908501526101406107bd818701611c9f565b151590850152610160808601359085015261018090806107df8388018861281b565b929093870152850191611fe9565b6101a06107fc8186018661281b565b9185840390860152611fe9565b9161081a6101c0918281019061281b565b929091818503910152611fe9565b950192019201909161056f565b610840818387611d4f565b35906001600160a01b03821682036104cc576108b2600192610863838888611d4f565b3590604051917fa9059cbb0000000000000000000000000000000000000000000000000000000060208401526001600160a01b0360805116602484015260448301526044825261031e82611f7f565b016104f7565b60046040517ffc235960000000000000000000000000000000000000000000000000000000008152fd5b6108f3816101605161010051611d80565b906109048160e05161014051611d4f565b35916109168260c05161012051611d4f565b3592858310156111f95761092f8360051b860186611dc0565b90918592819661093e8661240e565b92602087013542116111c8576060870135159081156111bb575b81156111b2575b5080156111aa575b611180576001600160a01b036109806101208801611d5f565b16600052600560205260ff60406000205416158015611157575b61112d576109ab6101008701611d5f565b6001600160a01b03806109c16101208a01611d5f565b16911614611103576001600160a01b036109dd60a08801611d5f565b161580156110e6575b80156110c9575b80156110ad575b6110835760c086016001600160a01b03610a0d82611d5f565b1615159081611066575b5061103c5782600052600660205260406000205460408701351461101257610a426101408701611d73565b15610fd25750670de0b6b3a76400008702878104670de0b6b3a76400001488151715610f795784610a72916124fd565b670de0b6b3a76400006040870135818102918183041490151715610f7957610a9f906060880135906124fd565b10610fa8578160005260066020526040600020805490670de0b6b3a764000089048201809211610f79575560808501358015670de0b6b3a76400008904808302839004141715610f7957610b0490604087013590670de0b6b3a76400008a04026124fd565b826000526006602052604086013560406000205411610f4f57670de0b6b3a7640000809195049704925b610b706020610b3d3689612182565b604051809381927f95de97cc0000000000000000000000000000000000000000000000000000000083526004830161230b565b0381734822f84ded2f60d2cbf0e353ab51b7b5d2e899355af49081156104c057600091610f15575b5015610ead57610bfe916020916001600160a01b03610bb960a08a01611d5f565b16906040518095819482937f1626ba7e000000000000000000000000000000000000000000000000000000008452896004850152604060248501526044840191611fe9565b03915afa9081156104c057600091610e32575b507fffffffff000000000000000000000000000000000000000000000000000000007f1626ba7e00000000000000000000000000000000000000000000000000000000911603610e08575b6101808401610c6b8186611dc0565b9050610dc0575b506101a084016014610c848287611dc0565b90501015610d01575b505060019450610cc0906001600160a01b03610cac6101008601611d5f565b1690610cba60a08601611d5f565b916128a8565b80610cce575b505001610231565b6001600160a01b03610ce6610100610cfa9401611d5f565b16906001600160a01b0360045416916128a8565b3880610cc6565b6103df610d0e9186611dc0565b909192610d1a846127cd565b610d2660a08801611d5f565b91816000526006602052604060002054936001600160a01b0386163b156104cc5786946040519b8c9687967f1ad047d20000000000000000000000000000000000000000000000000000000088526004880196610d8297612796565b03916001600160a01b031691815a6000948591f19081156104c057600195610cc092610db1575b819250610c8d565b610dba90611f6b565b38610da9565b610dcd610dd39186611dc0565b90612028565b15610dde5738610c72565b60046040517fb6629c02000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b90506020813d602011610ea5575b81610e4d60209383611f9b565b810103126104cc57517fffffffff00000000000000000000000000000000000000000000000000000000811681036104cc577fffffffff00000000000000000000000000000000000000000000000000000000610c11565b3d9150610e40565b610ebf610ecd92610ec592369161212d565b836126cf565b919091612536565b6001600160a01b0380610ee260a08801611d5f565b1691160315610c5c5760046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b90506020813d602011610f47575b81610f3060209383611f9b565b810103126104cc57610f4190611fdc565b38610b98565b3d9150610f23565b60046040517f17015bc1000000000000000000000000000000000000000000000000000000008152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60046040517fa0de07d3000000000000000000000000000000000000000000000000000000008152fd5b935091955082606085013511610fa857604084013591670de0b6b3a764000060808601359483600052600660205260408701356040600020550496610b2e565b60046040517fca92fdbb000000000000000000000000000000000000000000000000000000008152fd5b60046040517fd4dfdafe000000000000000000000000000000000000000000000000000000008152fd5b90506001600160a01b0361107a3392611d5f565b16141538610a17565b60046040517fd92e233d000000000000000000000000000000000000000000000000000000008152fd5b506001600160a01b036110c260e08801611d5f565b16156109f4565b506001600160a01b036110df6101008801611d5f565b16156109ed565b506001600160a01b036110fc6101208801611d5f565b16156109e6565b60046040517fdd807227000000000000000000000000000000000000000000000000000000008152fd5b60046040517ff84835a0000000000000000000000000000000000000000000000000000000008152fd5b506001600160a01b0361116d6101008801611d5f565b1660005260ff604060002054161561099a565b60046040517f1f2a2005000000000000000000000000000000000000000000000000000000008152fd5b508015610967565b9050153861095f565b6040880135159150610958565b602484604051907f2e775cae0000000000000000000000000000000000000000000000000000000082526004820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b508160c051141561022a565b5060c05160e0511415610223565b60046040517f521299a9000000000000000000000000000000000000000000000000000000008152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b60246040517fc0ae66ad000000000000000000000000000000000000000000000000000000008152336004820152fd5b346104cc5760206003193601126104cc57611313611c75565b61131b611cdd565b6001600160a01b0380911690817fffffffffffffffffffffffff00000000000000000000000000000000000000006002541617600255600154167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700600080a3005b346104cc5760006003193601126104cc5760206001600160a01b0360025416604051908152f35b346104cc5760206003193601126104cc5760043560005260066020526020604060002054604051908152f35b346104cc5760006003193601126104cc5760206001600160a01b0360045416604051908152f35b346104cc5760006003193601126104cc576020604051670de0b6b3a76400008152f35b346104cc5760206003193601126104cc576001600160a01b0361143a611c75565b166000526005602052602060ff604060002054166040519015158152f35b346104cc5760206003193601126104cc576004356001600160a01b038082168092036104cc57611486611cdd565b8115611083576003549081169082821461150057604080516001600160a01b03938416815292841660208401527fffffffffffffffffffffffff0000000000000000000000000000000000000000927f1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc9190a11617600355005b60046040517fea0f8928000000000000000000000000000000000000000000000000000000008152fd5b346104cc5760206003193601126104cc57611543611c75565b61154b611cdd565b6001600160a01b0390818116918215611083576004549081168381146115d257604080516001600160a01b0392831681529390911660208401527fffffffffffffffffffffffff0000000000000000000000000000000000000000927f649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed09190a11617600455005b60046040517fa133328a000000000000000000000000000000000000000000000000000000008152fd5b346104cc5760006003193601126104cc5760206001600160a01b0360015416604051908152f35b346104cc5760006003193601126104cc576002546001600160a01b0333818316036116a5577fffffffffffffffffffffffff00000000000000000000000000000000000000008092166002556001549133908316176001553391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152fd5b346104cc5760006003193601126104cc57611742611cdd565b60006001600160a01b037fffffffffffffffffffffffff00000000000000000000000000000000000000008060025416600255600154908116600155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346104cc5760406003193601126104cc5767ffffffffffffffff6004358181116104cc576117d7903690600401611cac565b916024359081116104cc576117f0903690600401611cac565b6117f8611cdd565b8315611242578084036108b85760005b84811061181157005b6001600160a01b03908161182e611829838989611d4f565b611d5f565b1615611083576001917f49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e27441761186b611866848789611d4f565b611d73565b8261187a611829868c8c611d4f565b166000526118bd6020916005835260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b6118cb611829858b8b611d4f565b926118da61186686898b611d4f565b9360405194151585521692a201611808565b346104cc5760206003193601126104cc576001600160a01b0361190d611c75565b166000526007602052602060ff604060002054166040519015158152f35b346104cc5760606003193601126104cc57611944611c75565b604435906001600160a01b03908183168093036104cc57611963611cdd565b1690811580156119bc575b611083576119ba91604051917fa9059cbb000000000000000000000000000000000000000000000000000000006020840152602483015260243560448301526044825261031e82611f7f565b005b50801561196e565b346104cc576119d236611c14565b6119de60a08201611d5f565b6001600160a01b0333911603611a55576119f78161240e565b80600052600660205260408060002054920135918281146110125760407f87b5f0afdc3a118b68246141c5bd338672ab3e901be636e27116238d284de6ac918151908482526020820152a16000526006602052604060002055600080f35b60046040517f4ca88867000000000000000000000000000000000000000000000000000000008152fd5b346104cc5760006003193601126104cc5760206001600160a01b0360035416604051908152f35b346104cc5760006003193601126104cc576020611ac1611e11565b604051908152f35b346104cc5760406003193601126104cc57611ae2611c75565b60243590811515908183036104cc576001600160a01b0390611b02611cdd565b16918215611083578260005260076020528160ff60406000205416151514611b92577fcba86444cdc912f5fa5f53c20361b3517933eb181876b3f4a0d47478c6a3039b91611b89602092856000526007845260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b604051908152a2005b60046040517f5b2625c0000000000000000000000000000000000000000000000000000000008152fd5b346104cc5760206003193601126104cc5760043567ffffffffffffffff81116104cc57611bf2610dcd6020923690600401611c47565b6040519015158152f35b346104cc576020611ac1611c0f36611c14565b61240e565b600319906020828201126104cc576004359167ffffffffffffffff83116104cc57826101e0920301126104cc5760040190565b9181601f840112156104cc5782359167ffffffffffffffff83116104cc57602083818601950101116104cc57565b600435906001600160a01b03821682036104cc57565b35906001600160a01b03821682036104cc57565b359081151582036104cc57565b9181601f840112156104cc5782359167ffffffffffffffff83116104cc576020808501948460051b0101116104cc57565b6001600160a01b03600154163303611cf157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b91908110156111f95760051b0190565b356001600160a01b03811681036104cc5790565b3580151581036104cc5790565b91908110156111f95760051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe21813603018212156104cc570190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156104cc570180359067ffffffffffffffff82116104cc576020019181360383136104cc57565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016301480611f42575b15611e6c577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117611f135760405251902090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b507f00000000000000000000000000000000000000000000000000000000000000004614611e43565b67ffffffffffffffff8111611f1357604052565b6080810190811067ffffffffffffffff821117611f1357604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611f1357604052565b519081151582036104cc57565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b90612080906001600160a01b036003541692604093849283518095819482937f3d303c920000000000000000000000000000000000000000000000000000000084528560048501528760248501526044840191611fe9565b03915afa9081156120e85760009283926120a8575b5050816120a0575090565b600191501490565b9080939250813d83116120e1575b6120c08183611f9b565b810103126120de575060206120d482611fdc565b9101513880612095565b80fd5b503d6120b6565b82513d6000823e3d90fd5b67ffffffffffffffff8111611f1357601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192612139826120f3565b916121476040519384611f9b565b8294818452818301116104cc578281602093846000960137010152565b9080601f830112156104cc5781602061217f9335910161212d565b90565b9190916101e09081818503126104cc576040519182019067ffffffffffffffff9183811083821117611f1357604052829481358452602082013560208501526040820135604085015260608201356060850152608082013560808501526121eb60a08301611c8b565b60a08501526121fc60c08301611c8b565b60c085015261220d60e08301611c8b565b60e0850152610100612220818401611c8b565b90850152610120612232818401611c8b565b90850152610140612244818401611c9f565b908501526101608083013590850152610180808301358481116104cc578261226d918501612164565b908501526101a0808301358481116104cc578261228b918501612164565b908501526101c092838301359081116104cc576122a89201612164565b910152565b919082519283825260005b8481106122f75750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b6020818301810151848301820152016122b8565b9061217f916020815281516020820152602082015160408201526040820151606082015260608201516080820152608082015160a082015260a08201516001600160a01b0380911660c08301528060c08401511660e083015260e0830151816101009116818401528301518161012091168184015283015190610140911681830152820151610160901515818301528201516101809081830152820151906101e06123c36101a09382858501526102008401906122ad565b928401516123fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0946101c0928686830301848701526122ad565b94015192828503019101526122ad565b602061241e612451923690612182565b604051809381927fc3c1f2ec0000000000000000000000000000000000000000000000000000000083526004830161230b565b0381734822f84ded2f60d2cbf0e353ab51b7b5d2e899355af49081156104c0576000916124cc575b50612482611e11565b906040519060208201927f1901000000000000000000000000000000000000000000000000000000000000845260228301526042820152604281526124c681611f7f565b51902090565b906020823d82116124f5575b816124e560209383611f9b565b810103126120de57505138612479565b3d91506124d8565b8115612507570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60058110156126a057806125475750565b600181036125ad5760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152fd5b600281036126135760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152fd5b60031461261c57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9060418151146000146126fd576126f9916020820151906060604084015193015160001a90612707565b9091565b5050600090600290565b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831161278a5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561277d5781516001600160a01b03811615612777579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b926001600160a01b0361217f98969360c0969386521660208501526040840152606083015260808201528160a08201520191611fe9565b6001600160a01b0316308114908115612812575b506127e857565b60046040517f8a5039c1000000000000000000000000000000000000000000000000000000008152fd5b905015386127e1565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156104cc57016020813591019167ffffffffffffffff82116104cc5781360383136104cc57565b90918281527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83116104cc5760209260051b809284830137010190565b91906001600160a01b03604051927f23b872dd00000000000000000000000000000000000000000000000000000000602085015216602483015230604483015260648201526064815260a081019181831067ffffffffffffffff841117611f135761291592604052612917565b565b6001600160a01b031690604051604081019080821067ffffffffffffffff831117611f13576129a8916040526020938482527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564858301526000808587829751910182855af13d15612a5f573d9161298d836120f3565b9261299b6040519485611f9b565b83523d868885013e612a63565b908151806129b7575b50505050565b828491810103126120de5750816129ce9101611fdc565b156129db578080806129b1565b608490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b6060915b91929015612ade5750815115612a77575090565b3b15612a805790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b825190915015612af15750805190602001fd5b612b2f906040519182917f08c379a00000000000000000000000000000000000000000000000000000000083526020600484015260248301906122ad565b0390fd5b9160148210612b6b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec6014843560601c9401920190565b60046040517fef356d7a000000000000000000000000000000000000000000000000000000008152fdfea26469706673582212202359e3ddbb19d82e21a3ac6f2af2942cb384f157a832b656ef265ddfd1e9389064736f6c634300081500330000000000000000000000005f354319704dcbeb487b44762621dd8b0b30d5b7000000000000000000000000f29f5fc83c9310c887efce9d68cae1f046b6511b", + "nonce": "0x2" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf9047d2a51c09e90a8dd93131ef38cccaec797f3c39afd0aaebb00b719daca69", + "transactionType": "CALL", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0x3c553461a9c28DbCc81B9f7fA8281d70D0d18098", + "function": "manageOperatorPrivilege(address,bool)", + "arguments": [ + "0xf29F5fc83c9310c887EFce9D68Cae1F046B6511B", + "true" + ], + "transaction": { + "type": "0x00", + "from": "0xf29f5fc83c9310c887efce9d68cae1f046b6511b", + "to": "0x3c553461a9c28dbcc81b9f7fa8281d70d0d18098", + "gas": "0x111af", + "value": "0x0", + "data": "0x2024cbc1000000000000000000000000f29f5fc83c9310c887efce9d68cae1f046b6511b0000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x3" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xde0e777d98382931ee7dc5e80d9c26b2958417b1b42f1a2dda092d0c1d94a67e", + "transactionType": "CALL", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0x3c553461a9c28DbCc81B9f7fA8281d70D0d18098", + "function": "updateTokenWhitelist(address[],bool[])", + "arguments": [ + "[0x7EbeF2A4b1B09381Ec5B9dF8C5c6f2dBECA59c73, 0x18fB38404DADeE1727Be4b805c5b242B5413Fa40, 0x81A1f39f7394c4849E4261Aa02AaC73865d13774, 0xe03bA6851335D01d38Dd6087c46C26008D16aF92]", + "[true, true, true, true]" + ], + "transaction": { + "type": "0x00", + "from": "0xf29f5fc83c9310c887efce9d68cae1f046b6511b", + "to": "0x3c553461a9c28dbcc81b9f7fa8281d70d0d18098", + "gas": "0x2c59a", + "value": "0x0", + "data": "0x6fda538f000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000040000000000000000000000007ebef2a4b1b09381ec5b9df8c5c6f2dbeca59c7300000000000000000000000018fb38404dadee1727be4b805c5b242b5413fa4000000000000000000000000081a1f39f7394c4849e4261aa02aac73865d13774000000000000000000000000e03ba6851335d01d38dd6087c46c26008d16af9200000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x4" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0xb81b71950d97fe692ba0cbfc8322d91b45139daf690d043258f2a7414a75d38f", + "transactionIndex": "0x0", + "blockHash": "0x3462645dfaa38b4a5343b50fb4737547cc7623f8019b0d3b2607146a2869f143", + "blockNumber": "0x46d145d", + "from": "0xf29F5fc83c9310c887EFce9D68Cae1F046B6511B", + "to": null, + "cumulativeGasUsed": "0xa6069", + "gasUsed": "0xa6069", + "contractAddress": "0x4822f84DED2f60D2cbF0e353ab51b7B5D2e89935", + "logs": [], + "status": "0x1", + "root": "0x705b30baf70e2feb4a29f57e34279a860360e46dd3a240b6724bc06c9854a797", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0" + }, + { + "transactionHash": "0xf579de2a4170d4d9d326d60042333e1ed1460ea74fffb1412ff65d1c996fa1bd", + "transactionIndex": "0x1", + "blockHash": "0x3462645dfaa38b4a5343b50fb4737547cc7623f8019b0d3b2607146a2869f143", + "blockNumber": "0x46d145d", + "from": "0xf29F5fc83c9310c887EFce9D68Cae1F046B6511B", + "to": null, + "cumulativeGasUsed": "0x48360", + "gasUsed": "0x48360", + "contractAddress": "0x5F354319704dCBeb487b44762621DD8B0b30D5B7", + "logs": [], + "status": "0x1", + "root": "0x51e9edbe2d3362fa10b5f192eec4f9bfb55b5f25dbf562143a5a8b07d75c4ec6", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0" + }, + { + "transactionHash": "0x7e5dfabad0685dbdab4f8a5e51917b89f053e3d44f0ae884442d3d93fbc79066", + "transactionIndex": "0x2", + "blockHash": "0x3462645dfaa38b4a5343b50fb4737547cc7623f8019b0d3b2607146a2869f143", + "blockNumber": "0x46d145d", + "from": "0xf29F5fc83c9310c887EFce9D68Cae1F046B6511B", + "to": null, + "cumulativeGasUsed": "0x27183a", + "gasUsed": "0x27183a", + "contractAddress": "0x3c553461a9c28DbCc81B9f7fA8281d70D0d18098", + "logs": [ + { + "address": "0x3c553461a9c28DbCc81B9f7fA8281d70D0d18098", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f29f5fc83c9310c887efce9d68cae1f046b6511b" + ], + "data": "0x", + "blockHash": "0x3462645dfaa38b4a5343b50fb4737547cc7623f8019b0d3b2607146a2869f143", + "blockNumber": "0x46d145d", + "transactionHash": "0x7e5dfabad0685dbdab4f8a5e51917b89f053e3d44f0ae884442d3d93fbc79066", + "transactionIndex": "0x2", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x3c553461a9c28DbCc81B9f7fA8281d70D0d18098", + "topics": [ + "0x649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed0" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f29f5fc83c9310c887efce9d68cae1f046b6511b", + "blockHash": "0x3462645dfaa38b4a5343b50fb4737547cc7623f8019b0d3b2607146a2869f143", + "blockNumber": "0x46d145d", + "transactionHash": "0x7e5dfabad0685dbdab4f8a5e51917b89f053e3d44f0ae884442d3d93fbc79066", + "transactionIndex": "0x2", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x3c553461a9c28DbCc81B9f7fA8281d70D0d18098", + "topics": [ + "0x1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f29f5fc83c9310c887efce9d68cae1f046b6511b", + "blockHash": "0x3462645dfaa38b4a5343b50fb4737547cc7623f8019b0d3b2607146a2869f143", + "blockNumber": "0x46d145d", + "transactionHash": "0x7e5dfabad0685dbdab4f8a5e51917b89f053e3d44f0ae884442d3d93fbc79066", + "transactionIndex": "0x2", + "logIndex": "0x2", + "removed": false + } + ], + "status": "0x1", + "root": "0xf76a917c52bc36a26d80596417be8cb27fb30094e38e3e7e5991cdc9cb54598d", + "logsBloom": "0x00020000000000000000000000000000000000000018000000800000000000000000000000000000000000000000000080000000000000000000000040000000000000000000000000000000000000000001000000000000000000000000000000000000020000000000000000000800000800000000000000000000000000400000000000000002000000000000000400001000080000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0" + }, + { + "transactionHash": "0xf9047d2a51c09e90a8dd93131ef38cccaec797f3c39afd0aaebb00b719daca69", + "transactionIndex": "0x3", + "blockHash": "0x3462645dfaa38b4a5343b50fb4737547cc7623f8019b0d3b2607146a2869f143", + "blockNumber": "0x46d145d", + "from": "0xf29F5fc83c9310c887EFce9D68Cae1F046B6511B", + "to": "0x3c553461a9c28DbCc81B9f7fA8281d70D0d18098", + "cumulativeGasUsed": "0xbb23", + "gasUsed": "0xbb23", + "contractAddress": "0x0000000000000000000000000000000000000000", + "logs": [ + { + "address": "0x3c553461a9c28DbCc81B9f7fA8281d70D0d18098", + "topics": [ + "0xcba86444cdc912f5fa5f53c20361b3517933eb181876b3f4a0d47478c6a3039b", + "0x000000000000000000000000f29f5fc83c9310c887efce9d68cae1f046b6511b" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x3462645dfaa38b4a5343b50fb4737547cc7623f8019b0d3b2607146a2869f143", + "blockNumber": "0x46d145d", + "transactionHash": "0xf9047d2a51c09e90a8dd93131ef38cccaec797f3c39afd0aaebb00b719daca69", + "transactionIndex": "0x3", + "logIndex": "0x3", + "removed": false + } + ], + "status": "0x1", + "root": "0x8d87d5b8e8b7714d0b9b4c5cfe36237c972e6dfc16055bb6ed8bf3f07838d40e", + "logsBloom": "0x00080000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000400000000000000000000080000000000000000000000000100000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0" + }, + { + "transactionHash": "0xde0e777d98382931ee7dc5e80d9c26b2958417b1b42f1a2dda092d0c1d94a67e", + "transactionIndex": "0x4", + "blockHash": "0x3462645dfaa38b4a5343b50fb4737547cc7623f8019b0d3b2607146a2869f143", + "blockNumber": "0x46d145d", + "from": "0xf29F5fc83c9310c887EFce9D68Cae1F046B6511B", + "to": "0x3c553461a9c28DbCc81B9f7fA8281d70D0d18098", + "cumulativeGasUsed": "0x1e533", + "gasUsed": "0x1e533", + "contractAddress": "0x0000000000000000000000000000000000000000", + "logs": [ + { + "address": "0x3c553461a9c28DbCc81B9f7fA8281d70D0d18098", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000007ebef2a4b1b09381ec5b9df8c5c6f2dbeca59c73" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x3462645dfaa38b4a5343b50fb4737547cc7623f8019b0d3b2607146a2869f143", + "blockNumber": "0x46d145d", + "transactionHash": "0xde0e777d98382931ee7dc5e80d9c26b2958417b1b42f1a2dda092d0c1d94a67e", + "transactionIndex": "0x4", + "logIndex": "0x4", + "removed": false + }, + { + "address": "0x3c553461a9c28DbCc81B9f7fA8281d70D0d18098", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x00000000000000000000000018fb38404dadee1727be4b805c5b242b5413fa40" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x3462645dfaa38b4a5343b50fb4737547cc7623f8019b0d3b2607146a2869f143", + "blockNumber": "0x46d145d", + "transactionHash": "0xde0e777d98382931ee7dc5e80d9c26b2958417b1b42f1a2dda092d0c1d94a67e", + "transactionIndex": "0x4", + "logIndex": "0x5", + "removed": false + }, + { + "address": "0x3c553461a9c28DbCc81B9f7fA8281d70D0d18098", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x00000000000000000000000081a1f39f7394c4849e4261aa02aac73865d13774" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x3462645dfaa38b4a5343b50fb4737547cc7623f8019b0d3b2607146a2869f143", + "blockNumber": "0x46d145d", + "transactionHash": "0xde0e777d98382931ee7dc5e80d9c26b2958417b1b42f1a2dda092d0c1d94a67e", + "transactionIndex": "0x4", + "logIndex": "0x6", + "removed": false + }, + { + "address": "0x3c553461a9c28DbCc81B9f7fA8281d70D0d18098", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000e03ba6851335d01d38dd6087c46c26008d16af92" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x3462645dfaa38b4a5343b50fb4737547cc7623f8019b0d3b2607146a2869f143", + "blockNumber": "0x46d145d", + "transactionHash": "0xde0e777d98382931ee7dc5e80d9c26b2958417b1b42f1a2dda092d0c1d94a67e", + "transactionIndex": "0x4", + "logIndex": "0x7", + "removed": false + } + ], + "status": "0x1", + "root": "0x7f9d40d37ea99f054d723912da527fd95f55bd52cd9507b23cb024881173197a", + "logsBloom": "0x00000000000000000000000000001000000000080008000000000000000000000000000001000000000000000000000080000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000008000000000000000000000000008000000000000000000000000000000000000000000002000000000000400000000000000000000100000000000000000000000080000000000000000000000000000000400000000000000100000000008000000000000000000000000041000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000", + "type": "0x0" + } + ], + "libraries": [ + "src/libraries/OrderEngine.sol:OrderEngine:0x4822f84ded2f60d2cbf0e353ab51b7b5d2e89935" + ], + "pending": [], + "returns": {}, + "timestamp": 1712128519, + "chain": 1890, + "multi": false, + "commit": "96d70ed" +} \ No newline at end of file diff --git a/broadcast/deployOrderEngine.s.sol/1890/run-latest.json b/broadcast/deployOrderEngine.s.sol/1890/run-latest.json new file mode 100644 index 0000000..f63197c --- /dev/null +++ b/broadcast/deployOrderEngine.s.sol/1890/run-latest.json @@ -0,0 +1,309 @@ +{ + "transactions": [ + { + "hash": "0xb81b71950d97fe692ba0cbfc8322d91b45139daf690d043258f2a7414a75d38f", + "transactionType": "CREATE", + "contractName": "OrderEngine", + "contractAddress": "0x4822f84DED2f60D2cbF0e353ab51b7B5D2e89935", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xf29f5fc83c9310c887efce9d68cae1f046b6511b", + "gas": "0xd7c66", + "data": "0x6080806040523461001a57610b5b9081610020823930815050f35b600080fdfe608060405260048036101561001357600080fd5b60003560e01c90816321cd19a91461069f5781634416e986146104d857816395de97cc146104b7578163b4c07547146100d557508063b91611f41461007c5763c3c1f2ec1461006157600080fd5b602061007461006f3661077e565b610985565b604051908152f35b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d05760206040517fb91209a767a8178c503c992a2db0dd232393048d748c43a04d40fcccacc0df008152f35b600080fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d05780359067ffffffffffffffff82116100d057366023830112156100d05781602461012e93369301359101610895565b60606101c060405161013f8161082d565b60008152600060208201526000604082015260008382015260006080820152600060a0820152600060c0820152600060e0820152600061010082015260006101208201526000610140820152600061016082015282610180820152826101a082015201526101e0818051810103126100d05760208101516040820151916060810151608082015160a08301516101d760c08501610b04565b6101e360e08601610b04565b6101f06101008701610b04565b6101fd6101208801610b04565b9161020b6101408901610b04565b936101608901519586151587036100d0576101808a0151976101a08b0151996101c08c01519b6101e001519c6040519b60208d015260208c5261024d8c610879565b6040519c60208e015260208d526102638d610879565b6040519d60208f01528d6020815261027a90610879565b6040519e8f916102898361082d565b825260208201526040015260608d015260808c015273ffffffffffffffffffffffffffffffffffffffff1660a08b015273ffffffffffffffffffffffffffffffffffffffff1660c08a015273ffffffffffffffffffffffffffffffffffffffff1660e089015273ffffffffffffffffffffffffffffffffffffffff1661010088015273ffffffffffffffffffffffffffffffffffffffff1661012087015215156101408601526101608501526101808401526101a08301526101c082015260405180916020825280516020830152602081015160408301526040810151606083015260608101516080830152608081015160a083015260a081015173ffffffffffffffffffffffffffffffffffffffff1660c083015260c081015173ffffffffffffffffffffffffffffffffffffffff1660e083015260e081015173ffffffffffffffffffffffffffffffffffffffff1661010083015261010081015173ffffffffffffffffffffffffffffffffffffffff1661012083015261012081015173ffffffffffffffffffffffffffffffffffffffff1661014083015261014081015115156101608301526101608101516101808301526101808101516101a083016101e09052610200830161045c916107cf565b906101a08101517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09283858203016101c0860152610499916107cf565b906101c0015191838203016101e08401526104b3916107cf565b0390f35b60206104cd60a06104c73661077e565b01610906565b3b1515604051908152f35b6104e13661077e565b6104ed60a08201610906565b6104f960c08301610906565b61050560e08401610906565b9061016061010094610518868201610906565b9361012090610528828401610906565b9061014091610538838601610927565b9361055161054a610180880188610934565b3691610895565b602081519101209761056a61054a6101a0890189610934565b602081519101209961058361054a6101c08a018a610934565b602081519101209b6040519d8e918a35602084015260208b0135604084015260408b0135606084015260608b0135608084015260808b013560a084015273ffffffffffffffffffffffffffffffffffffffff978880968180941660c08701521660e08501521691015216908b0152169088015215158287015201356101808501526101a08401526101c08301526101e09081830152815261020081019181831067ffffffffffffffff84111761067157507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0090826040526020835261066c6102208201826107cf565b030190f35b6041907f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6040813601126100d057813567ffffffffffffffff918282116100d0576101e09082360301126100d0576106f5908301610985565b60405160208101917f1901000000000000000000000000000000000000000000000000000000000000835260243560228301526042820152604281526080810192818410908411176107505760209350826040525190208152f35b6041847f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc906020828201126100d0576004359167ffffffffffffffff83116100d057826101e0920301126100d05760040190565b919082519283825260005b8481106108195750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b6020818301810151848301820152016107da565b6101e0810190811067ffffffffffffffff82111761084a57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040810190811067ffffffffffffffff82111761084a57604052565b92919267ffffffffffffffff9182811161084a5760405192601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011684019081118482101761084a576040528294818452818301116100d0578281602093846000960137010152565b3573ffffffffffffffffffffffffffffffffffffffff811681036100d05790565b3580151581036100d05790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156100d0570180359067ffffffffffffffff82116100d0576020019181360383136100d057565b61099160a08201610906565b9061099e60c08201610906565b6109aa60e08301610906565b90610160610100936109bd858201610906565b92610120956109cd878401610906565b90610140916109dd838601610927565b92610180946109f161054a87890189610934565b6020815191012098610a0a61054a6101a08a018a610934565b602081519101209a610a2361054a6101c08b018b610934565b602081519101209c6040519e8f927fb91209a767a8178c503c992a2db0dd232393048d748c43a04d40fcccacc0df0060208501528b35604085015260208c0135606085015260408c0135608085015260608c013560a085015260808c013560c085015273ffffffffffffffffffffffffffffffffffffffff988980978180951660e088015216908501521691015216908b0152168489015215159087015201356101a08501526101c08401526101e083015261020090818301528152610220810181811067ffffffffffffffff82111761084a576040526020815191012090565b519073ffffffffffffffffffffffffffffffffffffffff821682036100d05756fea26469706673582212201805f314460b1a5374bb253f72f024bdc8ea21cc2e77073b1164f84307a2015264736f6c63430008150033", + "nonce": "0x0" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf579de2a4170d4d9d326d60042333e1ed1460ea74fffb1412ff65d1c996fa1bd", + "transactionType": "CREATE", + "contractName": "Predicates", + "contractAddress": "0x5F354319704dCBeb487b44762621DD8B0b30D5B7", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0xf29f5fc83c9310c887efce9d68cae1f046b6511b", + "gas": "0x5dd9f", + "value": "0x0", + "data": "0x6080806040523461001657610464908161001c8239f35b600080fdfe604060808152600436101561001357600080fd5b6000803560e01c80633d303c92146102265780634f38e2b8146101f55780636fe7b0ba146101c457806374261145146101a8578063bf15fcd814610157578063bf797959146100dd578063bfa75143146100b45763ca4ece221461007657600080fd5b346100b15760206100948361008a366102e9565b9093919330610408565b819391936100a7575b5050519015158152f35b109150838061009d565b80fd5b5090346100d9576020906100d06100ca366102e9565b916103a8565b90519015158152f35b5080fd5b5090346100d95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d9576004359167ffffffffffffffff83116100b1575061013c6101356020933690600401610247565b9030610408565b8192919261014e575b50519015158152f35b15915038610145565b50346100b1575061017061016a3661027a565b91610408565b901561017f5760209151908152f35b600482517f1f1b8f61000000000000000000000000000000000000000000000000000000008152fd5b5090346100d9576020906100d06101be366102e9565b9161034f565b50346100b15760206101d98361008a366102e9565b819391936101eb575050519015158152f35b149150838061009d565b50346100b157602061020a8361008a366102e9565b8193919361021c575050519015158152f35b119150838061009d565b50346100b1575061023961016a3661027a565b825191151582526020820152f35b9181601f840112156102755782359167ffffffffffffffff8311610275576020838186019501011161027557565b600080fd5b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126102755760043573ffffffffffffffffffffffffffffffffffffffff8116810361027557916024359067ffffffffffffffff8211610275576102e591600401610247565b9091565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261027557600435916024359067ffffffffffffffff8211610275576102e591600401610247565b90939293848311610275578411610275578101920390565b9290919260005b63ffffffff821690811561039d5761013582610373928888610337565b81610392575b50610388579060201c90610356565b5050915050600190565b600191501438610379565b505050915050600090565b92909192600090815b63ffffffff82169081156103fc57610135826103ce928989610337565b90159081156103f0575b506103e7579060201c906103b1565b50509150915090565b600191501415386103d8565b50505050915050600190565b916000906020928294826040519283375afa60203d1416918261042757565b600051915056fea26469706673582212200458f875fadeeb52c1e054aa965d8292bed98c8059d7cbdeadebad7fe2b4b8e364736f6c63430008150033", + "nonce": "0x1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x7e5dfabad0685dbdab4f8a5e51917b89f053e3d44f0ae884442d3d93fbc79066", + "transactionType": "CREATE", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0x3c553461a9c28DbCc81B9f7fA8281d70D0d18098", + "function": null, + "arguments": [ + "0x5F354319704dCBeb487b44762621DD8B0b30D5B7", + "0xf29F5fc83c9310c887EFce9D68Cae1F046B6511B" + ], + "transaction": { + "type": "0x00", + "from": "0xf29f5fc83c9310c887efce9d68cae1f046b6511b", + "gas": "0x32cee2", + "value": "0x0", + "data": "0x61014034620002a6576001600160401b0362002e93601f38829003908101601f191684019083821185831017620002905780859160409485948552833981010312620002a65782516001600160a01b039384821691829003620002a6576020015190848216808303620002a6578351906200007a82620002ab565b601d825260208201957f456c656b7472696b204c696d6974204f726465722050726f746f636f6c0000008752600260208751620000b781620002ab565b828152019761763160f01b8952600160005560018060a01b031994858354168355600154338782161760015589519b3391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a351902097208760e05261010098818a524660a05260208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f998a84528983015260608201524660808201523060a082015260a0815260c08101928184109084111762000290578288525190206080523060c0526101209687528315801562000287575b620002785750600480548316919091179055600380549091169190911790558151600081526001600160a01b03821660208201527f1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc9162000234917f649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed090604090a18351600081526001600160a01b0390911660208201529081906040820190565b0390a15190612bcb9283620002c8843960805183611e4a015260a05183611f45015260c05183611e1b015260e05183611e9901525182611ebf01525181611e760152f35b63d92e233d60e01b8152600490fd5b50811562000193565b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620002905760405256fe610180604052600436101561001357600080fd5b60003560e01c80630610f4a714611bfc57806315169dec14611bbc5780632024cbc114611ac95780633644e51514611aa65780633c3efab414611a7f5780635f2a6451146119c457806369328dec1461192b5780636d70f7ae146118ec5780636fda538f146117a5578063715018a61461172957806379ba5097146116235780638da5cb5b146115fc5780638efede3d1461152a57806390d6e14c14611458578063ab37f48614611419578063c2ee3a08146113f6578063c415b95c146113cf578063cf0f969d146113a3578063e30c39781461137c578063f2fde38b146112fa5763fe61e35c1461010457600080fd5b346104cc5760e06003193601126104cc5767ffffffffffffffff6004358181116104cc57610136903690600401611cac565b61016052610100526024358181116104cc57610156903690600401611cac565b60e052610140526044358181116104cc57610175903690600401611cac565b60c052610120526064358181116104cc57610194903690600401611cac565b916084358181116104cc576101ad903690600401611c47565b939060a4358381116104cc576101c7903690600401611cac565b95909360c435116104cc576101e13660c435600401611cac565b93909533600052600760205260ff60406000205416156112ca5760026000541461126c57600260005561016051156112425760e0516101605114801590611234575b8015611228575b6108b85760005b6101605181106108e25750505060148110156104d1575b50505050505060005b610160518110610262576001600055005b610273816101605161010051611d80565b906102848160e05161014051611d4f565b356102958260c05161012051611d4f565b35906102a08461240e565b90670de0b6b3a7640000946103236001600160a01b036102c36101208401611d5f565b166102d060e08401611d5f565b906001600160a01b03604051927fa9059cbb00000000000000000000000000000000000000000000000000000000602085015216602483015288870460448301526044825261031e82611f7f565b612917565b826000526006602052604060002054956101c0820160146103448285611dc0565b905010156103cf575b506001600160a01b037f2b15903b1f1516345ba547119efb6a90ccb8012f1803cc933c0a28b9291a5fef9360019884839461038d61010060c09801611d5f565b998161039c6101208501611d5f565b956080956040519c8d5260208d01520460408b0152046060890152803582890152013560a087015216941692a301610251565b6103df6103e59184959394611dc0565b90612b33565b6103f08394936127cd565b6103fc60a08701611d5f565b936001600160a01b0381163b156104cc578560006001600160a01b038b61045f8f96849886988f8c906040519e8f9c8d9b8c997fb6e1471a000000000000000000000000000000000000000000000000000000008b520493049160048901612796565b0393165af19081156104c0576001987f2b15903b1f1516345ba547119efb6a90ccb8012f1803cc933c0a28b9291a5fef9560c0956001600160a01b039586956104b1575b50945094509850935061034d565b6104ba90611f6b565b386104a3565b6040513d6000823e3d90fd5b600080fd5b6104da91612b33565b90949160805293946104ed6080516127cd565b8281036108b85760005b81811061083557506001600160a01b03608051163b156104cc5760405160a0527f2499e3a20000000000000000000000000000000000000000000000000000000060a0515260c460a0510160c0600460a051015261016051905260e460a0510160e46101605160051b60a05101019061010051906000905b61016051821061068b575050506105bd6105a160209260031960a051820301602460a051015260e0516101405161286b565b60031960a051820301604460a051015260c0516101205161286b565b60031960a051820301606460a05101528281520193906000905b808210610658575050506000949261061f926106029260031960a051840301608460a051015261286b565b60031960a05182030160a460a051015260a0519360a05193611fe9565b0360a051836001600160a01b03608051165af180156104c057610648575b388080808080610248565b61065360a051611f6b565b61063d565b9091948535906001600160a01b03821682036104cc57602080916001600160a01b036001941681520196019201906105d7565b9091927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c60a05182030182527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe2161010051360301843512156104cc5760208061082860019361010051883501906108096107ed6101e084358452868501358785015260408501356040850152606080860135908501526080808601359085015260a06001600160a01b03610740828801611c8b565b16908501526001600160a01b0361075960c08701611c8b565b1660c08501526001600160a01b0361077360e08701611c8b565b1660e08501526101006001600160a01b0361078f828801611c8b565b16908501526101206001600160a01b036107aa828801611c8b565b16908501526101406107bd818701611c9f565b151590850152610160808601359085015261018090806107df8388018861281b565b929093870152850191611fe9565b6101a06107fc8186018661281b565b9185840390860152611fe9565b9161081a6101c0918281019061281b565b929091818503910152611fe9565b950192019201909161056f565b610840818387611d4f565b35906001600160a01b03821682036104cc576108b2600192610863838888611d4f565b3590604051917fa9059cbb0000000000000000000000000000000000000000000000000000000060208401526001600160a01b0360805116602484015260448301526044825261031e82611f7f565b016104f7565b60046040517ffc235960000000000000000000000000000000000000000000000000000000008152fd5b6108f3816101605161010051611d80565b906109048160e05161014051611d4f565b35916109168260c05161012051611d4f565b3592858310156111f95761092f8360051b860186611dc0565b90918592819661093e8661240e565b92602087013542116111c8576060870135159081156111bb575b81156111b2575b5080156111aa575b611180576001600160a01b036109806101208801611d5f565b16600052600560205260ff60406000205416158015611157575b61112d576109ab6101008701611d5f565b6001600160a01b03806109c16101208a01611d5f565b16911614611103576001600160a01b036109dd60a08801611d5f565b161580156110e6575b80156110c9575b80156110ad575b6110835760c086016001600160a01b03610a0d82611d5f565b1615159081611066575b5061103c5782600052600660205260406000205460408701351461101257610a426101408701611d73565b15610fd25750670de0b6b3a76400008702878104670de0b6b3a76400001488151715610f795784610a72916124fd565b670de0b6b3a76400006040870135818102918183041490151715610f7957610a9f906060880135906124fd565b10610fa8578160005260066020526040600020805490670de0b6b3a764000089048201809211610f79575560808501358015670de0b6b3a76400008904808302839004141715610f7957610b0490604087013590670de0b6b3a76400008a04026124fd565b826000526006602052604086013560406000205411610f4f57670de0b6b3a7640000809195049704925b610b706020610b3d3689612182565b604051809381927f95de97cc0000000000000000000000000000000000000000000000000000000083526004830161230b565b0381734822f84ded2f60d2cbf0e353ab51b7b5d2e899355af49081156104c057600091610f15575b5015610ead57610bfe916020916001600160a01b03610bb960a08a01611d5f565b16906040518095819482937f1626ba7e000000000000000000000000000000000000000000000000000000008452896004850152604060248501526044840191611fe9565b03915afa9081156104c057600091610e32575b507fffffffff000000000000000000000000000000000000000000000000000000007f1626ba7e00000000000000000000000000000000000000000000000000000000911603610e08575b6101808401610c6b8186611dc0565b9050610dc0575b506101a084016014610c848287611dc0565b90501015610d01575b505060019450610cc0906001600160a01b03610cac6101008601611d5f565b1690610cba60a08601611d5f565b916128a8565b80610cce575b505001610231565b6001600160a01b03610ce6610100610cfa9401611d5f565b16906001600160a01b0360045416916128a8565b3880610cc6565b6103df610d0e9186611dc0565b909192610d1a846127cd565b610d2660a08801611d5f565b91816000526006602052604060002054936001600160a01b0386163b156104cc5786946040519b8c9687967f1ad047d20000000000000000000000000000000000000000000000000000000088526004880196610d8297612796565b03916001600160a01b031691815a6000948591f19081156104c057600195610cc092610db1575b819250610c8d565b610dba90611f6b565b38610da9565b610dcd610dd39186611dc0565b90612028565b15610dde5738610c72565b60046040517fb6629c02000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b90506020813d602011610ea5575b81610e4d60209383611f9b565b810103126104cc57517fffffffff00000000000000000000000000000000000000000000000000000000811681036104cc577fffffffff00000000000000000000000000000000000000000000000000000000610c11565b3d9150610e40565b610ebf610ecd92610ec592369161212d565b836126cf565b919091612536565b6001600160a01b0380610ee260a08801611d5f565b1691160315610c5c5760046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b90506020813d602011610f47575b81610f3060209383611f9b565b810103126104cc57610f4190611fdc565b38610b98565b3d9150610f23565b60046040517f17015bc1000000000000000000000000000000000000000000000000000000008152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60046040517fa0de07d3000000000000000000000000000000000000000000000000000000008152fd5b935091955082606085013511610fa857604084013591670de0b6b3a764000060808601359483600052600660205260408701356040600020550496610b2e565b60046040517fca92fdbb000000000000000000000000000000000000000000000000000000008152fd5b60046040517fd4dfdafe000000000000000000000000000000000000000000000000000000008152fd5b90506001600160a01b0361107a3392611d5f565b16141538610a17565b60046040517fd92e233d000000000000000000000000000000000000000000000000000000008152fd5b506001600160a01b036110c260e08801611d5f565b16156109f4565b506001600160a01b036110df6101008801611d5f565b16156109ed565b506001600160a01b036110fc6101208801611d5f565b16156109e6565b60046040517fdd807227000000000000000000000000000000000000000000000000000000008152fd5b60046040517ff84835a0000000000000000000000000000000000000000000000000000000008152fd5b506001600160a01b0361116d6101008801611d5f565b1660005260ff604060002054161561099a565b60046040517f1f2a2005000000000000000000000000000000000000000000000000000000008152fd5b508015610967565b9050153861095f565b6040880135159150610958565b602484604051907f2e775cae0000000000000000000000000000000000000000000000000000000082526004820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b508160c051141561022a565b5060c05160e0511415610223565b60046040517f521299a9000000000000000000000000000000000000000000000000000000008152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b60246040517fc0ae66ad000000000000000000000000000000000000000000000000000000008152336004820152fd5b346104cc5760206003193601126104cc57611313611c75565b61131b611cdd565b6001600160a01b0380911690817fffffffffffffffffffffffff00000000000000000000000000000000000000006002541617600255600154167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700600080a3005b346104cc5760006003193601126104cc5760206001600160a01b0360025416604051908152f35b346104cc5760206003193601126104cc5760043560005260066020526020604060002054604051908152f35b346104cc5760006003193601126104cc5760206001600160a01b0360045416604051908152f35b346104cc5760006003193601126104cc576020604051670de0b6b3a76400008152f35b346104cc5760206003193601126104cc576001600160a01b0361143a611c75565b166000526005602052602060ff604060002054166040519015158152f35b346104cc5760206003193601126104cc576004356001600160a01b038082168092036104cc57611486611cdd565b8115611083576003549081169082821461150057604080516001600160a01b03938416815292841660208401527fffffffffffffffffffffffff0000000000000000000000000000000000000000927f1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc9190a11617600355005b60046040517fea0f8928000000000000000000000000000000000000000000000000000000008152fd5b346104cc5760206003193601126104cc57611543611c75565b61154b611cdd565b6001600160a01b0390818116918215611083576004549081168381146115d257604080516001600160a01b0392831681529390911660208401527fffffffffffffffffffffffff0000000000000000000000000000000000000000927f649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed09190a11617600455005b60046040517fa133328a000000000000000000000000000000000000000000000000000000008152fd5b346104cc5760006003193601126104cc5760206001600160a01b0360015416604051908152f35b346104cc5760006003193601126104cc576002546001600160a01b0333818316036116a5577fffffffffffffffffffffffff00000000000000000000000000000000000000008092166002556001549133908316176001553391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152fd5b346104cc5760006003193601126104cc57611742611cdd565b60006001600160a01b037fffffffffffffffffffffffff00000000000000000000000000000000000000008060025416600255600154908116600155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346104cc5760406003193601126104cc5767ffffffffffffffff6004358181116104cc576117d7903690600401611cac565b916024359081116104cc576117f0903690600401611cac565b6117f8611cdd565b8315611242578084036108b85760005b84811061181157005b6001600160a01b03908161182e611829838989611d4f565b611d5f565b1615611083576001917f49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e27441761186b611866848789611d4f565b611d73565b8261187a611829868c8c611d4f565b166000526118bd6020916005835260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b6118cb611829858b8b611d4f565b926118da61186686898b611d4f565b9360405194151585521692a201611808565b346104cc5760206003193601126104cc576001600160a01b0361190d611c75565b166000526007602052602060ff604060002054166040519015158152f35b346104cc5760606003193601126104cc57611944611c75565b604435906001600160a01b03908183168093036104cc57611963611cdd565b1690811580156119bc575b611083576119ba91604051917fa9059cbb000000000000000000000000000000000000000000000000000000006020840152602483015260243560448301526044825261031e82611f7f565b005b50801561196e565b346104cc576119d236611c14565b6119de60a08201611d5f565b6001600160a01b0333911603611a55576119f78161240e565b80600052600660205260408060002054920135918281146110125760407f87b5f0afdc3a118b68246141c5bd338672ab3e901be636e27116238d284de6ac918151908482526020820152a16000526006602052604060002055600080f35b60046040517f4ca88867000000000000000000000000000000000000000000000000000000008152fd5b346104cc5760006003193601126104cc5760206001600160a01b0360035416604051908152f35b346104cc5760006003193601126104cc576020611ac1611e11565b604051908152f35b346104cc5760406003193601126104cc57611ae2611c75565b60243590811515908183036104cc576001600160a01b0390611b02611cdd565b16918215611083578260005260076020528160ff60406000205416151514611b92577fcba86444cdc912f5fa5f53c20361b3517933eb181876b3f4a0d47478c6a3039b91611b89602092856000526007845260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b604051908152a2005b60046040517f5b2625c0000000000000000000000000000000000000000000000000000000008152fd5b346104cc5760206003193601126104cc5760043567ffffffffffffffff81116104cc57611bf2610dcd6020923690600401611c47565b6040519015158152f35b346104cc576020611ac1611c0f36611c14565b61240e565b600319906020828201126104cc576004359167ffffffffffffffff83116104cc57826101e0920301126104cc5760040190565b9181601f840112156104cc5782359167ffffffffffffffff83116104cc57602083818601950101116104cc57565b600435906001600160a01b03821682036104cc57565b35906001600160a01b03821682036104cc57565b359081151582036104cc57565b9181601f840112156104cc5782359167ffffffffffffffff83116104cc576020808501948460051b0101116104cc57565b6001600160a01b03600154163303611cf157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b91908110156111f95760051b0190565b356001600160a01b03811681036104cc5790565b3580151581036104cc5790565b91908110156111f95760051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe21813603018212156104cc570190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156104cc570180359067ffffffffffffffff82116104cc576020019181360383136104cc57565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016301480611f42575b15611e6c577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117611f135760405251902090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b507f00000000000000000000000000000000000000000000000000000000000000004614611e43565b67ffffffffffffffff8111611f1357604052565b6080810190811067ffffffffffffffff821117611f1357604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611f1357604052565b519081151582036104cc57565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b90612080906001600160a01b036003541692604093849283518095819482937f3d303c920000000000000000000000000000000000000000000000000000000084528560048501528760248501526044840191611fe9565b03915afa9081156120e85760009283926120a8575b5050816120a0575090565b600191501490565b9080939250813d83116120e1575b6120c08183611f9b565b810103126120de575060206120d482611fdc565b9101513880612095565b80fd5b503d6120b6565b82513d6000823e3d90fd5b67ffffffffffffffff8111611f1357601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192612139826120f3565b916121476040519384611f9b565b8294818452818301116104cc578281602093846000960137010152565b9080601f830112156104cc5781602061217f9335910161212d565b90565b9190916101e09081818503126104cc576040519182019067ffffffffffffffff9183811083821117611f1357604052829481358452602082013560208501526040820135604085015260608201356060850152608082013560808501526121eb60a08301611c8b565b60a08501526121fc60c08301611c8b565b60c085015261220d60e08301611c8b565b60e0850152610100612220818401611c8b565b90850152610120612232818401611c8b565b90850152610140612244818401611c9f565b908501526101608083013590850152610180808301358481116104cc578261226d918501612164565b908501526101a0808301358481116104cc578261228b918501612164565b908501526101c092838301359081116104cc576122a89201612164565b910152565b919082519283825260005b8481106122f75750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b6020818301810151848301820152016122b8565b9061217f916020815281516020820152602082015160408201526040820151606082015260608201516080820152608082015160a082015260a08201516001600160a01b0380911660c08301528060c08401511660e083015260e0830151816101009116818401528301518161012091168184015283015190610140911681830152820151610160901515818301528201516101809081830152820151906101e06123c36101a09382858501526102008401906122ad565b928401516123fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0946101c0928686830301848701526122ad565b94015192828503019101526122ad565b602061241e612451923690612182565b604051809381927fc3c1f2ec0000000000000000000000000000000000000000000000000000000083526004830161230b565b0381734822f84ded2f60d2cbf0e353ab51b7b5d2e899355af49081156104c0576000916124cc575b50612482611e11565b906040519060208201927f1901000000000000000000000000000000000000000000000000000000000000845260228301526042820152604281526124c681611f7f565b51902090565b906020823d82116124f5575b816124e560209383611f9b565b810103126120de57505138612479565b3d91506124d8565b8115612507570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60058110156126a057806125475750565b600181036125ad5760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152fd5b600281036126135760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152fd5b60031461261c57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9060418151146000146126fd576126f9916020820151906060604084015193015160001a90612707565b9091565b5050600090600290565b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831161278a5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561277d5781516001600160a01b03811615612777579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b926001600160a01b0361217f98969360c0969386521660208501526040840152606083015260808201528160a08201520191611fe9565b6001600160a01b0316308114908115612812575b506127e857565b60046040517f8a5039c1000000000000000000000000000000000000000000000000000000008152fd5b905015386127e1565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156104cc57016020813591019167ffffffffffffffff82116104cc5781360383136104cc57565b90918281527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83116104cc5760209260051b809284830137010190565b91906001600160a01b03604051927f23b872dd00000000000000000000000000000000000000000000000000000000602085015216602483015230604483015260648201526064815260a081019181831067ffffffffffffffff841117611f135761291592604052612917565b565b6001600160a01b031690604051604081019080821067ffffffffffffffff831117611f13576129a8916040526020938482527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564858301526000808587829751910182855af13d15612a5f573d9161298d836120f3565b9261299b6040519485611f9b565b83523d868885013e612a63565b908151806129b7575b50505050565b828491810103126120de5750816129ce9101611fdc565b156129db578080806129b1565b608490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b6060915b91929015612ade5750815115612a77575090565b3b15612a805790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b825190915015612af15750805190602001fd5b612b2f906040519182917f08c379a00000000000000000000000000000000000000000000000000000000083526020600484015260248301906122ad565b0390fd5b9160148210612b6b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec6014843560601c9401920190565b60046040517fef356d7a000000000000000000000000000000000000000000000000000000008152fdfea26469706673582212202359e3ddbb19d82e21a3ac6f2af2942cb384f157a832b656ef265ddfd1e9389064736f6c634300081500330000000000000000000000005f354319704dcbeb487b44762621dd8b0b30d5b7000000000000000000000000f29f5fc83c9310c887efce9d68cae1f046b6511b", + "nonce": "0x2" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf9047d2a51c09e90a8dd93131ef38cccaec797f3c39afd0aaebb00b719daca69", + "transactionType": "CALL", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0x3c553461a9c28DbCc81B9f7fA8281d70D0d18098", + "function": "manageOperatorPrivilege(address,bool)", + "arguments": [ + "0xf29F5fc83c9310c887EFce9D68Cae1F046B6511B", + "true" + ], + "transaction": { + "type": "0x00", + "from": "0xf29f5fc83c9310c887efce9d68cae1f046b6511b", + "to": "0x3c553461a9c28dbcc81b9f7fa8281d70d0d18098", + "gas": "0x111af", + "value": "0x0", + "data": "0x2024cbc1000000000000000000000000f29f5fc83c9310c887efce9d68cae1f046b6511b0000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x3" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xde0e777d98382931ee7dc5e80d9c26b2958417b1b42f1a2dda092d0c1d94a67e", + "transactionType": "CALL", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0x3c553461a9c28DbCc81B9f7fA8281d70D0d18098", + "function": "updateTokenWhitelist(address[],bool[])", + "arguments": [ + "[0x7EbeF2A4b1B09381Ec5B9dF8C5c6f2dBECA59c73, 0x18fB38404DADeE1727Be4b805c5b242B5413Fa40, 0x81A1f39f7394c4849E4261Aa02AaC73865d13774, 0xe03bA6851335D01d38Dd6087c46C26008D16aF92]", + "[true, true, true, true]" + ], + "transaction": { + "type": "0x00", + "from": "0xf29f5fc83c9310c887efce9d68cae1f046b6511b", + "to": "0x3c553461a9c28dbcc81b9f7fa8281d70d0d18098", + "gas": "0x2c59a", + "value": "0x0", + "data": "0x6fda538f000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000040000000000000000000000007ebef2a4b1b09381ec5b9df8c5c6f2dbeca59c7300000000000000000000000018fb38404dadee1727be4b805c5b242b5413fa4000000000000000000000000081a1f39f7394c4849e4261aa02aac73865d13774000000000000000000000000e03ba6851335d01d38dd6087c46c26008d16af9200000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x4" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0xb81b71950d97fe692ba0cbfc8322d91b45139daf690d043258f2a7414a75d38f", + "transactionIndex": "0x0", + "blockHash": "0x3462645dfaa38b4a5343b50fb4737547cc7623f8019b0d3b2607146a2869f143", + "blockNumber": "0x46d145d", + "from": "0xf29F5fc83c9310c887EFce9D68Cae1F046B6511B", + "to": null, + "cumulativeGasUsed": "0xa6069", + "gasUsed": "0xa6069", + "contractAddress": "0x4822f84DED2f60D2cbF0e353ab51b7B5D2e89935", + "logs": [], + "status": "0x1", + "root": "0x705b30baf70e2feb4a29f57e34279a860360e46dd3a240b6724bc06c9854a797", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0" + }, + { + "transactionHash": "0xf579de2a4170d4d9d326d60042333e1ed1460ea74fffb1412ff65d1c996fa1bd", + "transactionIndex": "0x1", + "blockHash": "0x3462645dfaa38b4a5343b50fb4737547cc7623f8019b0d3b2607146a2869f143", + "blockNumber": "0x46d145d", + "from": "0xf29F5fc83c9310c887EFce9D68Cae1F046B6511B", + "to": null, + "cumulativeGasUsed": "0x48360", + "gasUsed": "0x48360", + "contractAddress": "0x5F354319704dCBeb487b44762621DD8B0b30D5B7", + "logs": [], + "status": "0x1", + "root": "0x51e9edbe2d3362fa10b5f192eec4f9bfb55b5f25dbf562143a5a8b07d75c4ec6", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0" + }, + { + "transactionHash": "0x7e5dfabad0685dbdab4f8a5e51917b89f053e3d44f0ae884442d3d93fbc79066", + "transactionIndex": "0x2", + "blockHash": "0x3462645dfaa38b4a5343b50fb4737547cc7623f8019b0d3b2607146a2869f143", + "blockNumber": "0x46d145d", + "from": "0xf29F5fc83c9310c887EFce9D68Cae1F046B6511B", + "to": null, + "cumulativeGasUsed": "0x27183a", + "gasUsed": "0x27183a", + "contractAddress": "0x3c553461a9c28DbCc81B9f7fA8281d70D0d18098", + "logs": [ + { + "address": "0x3c553461a9c28DbCc81B9f7fA8281d70D0d18098", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000f29f5fc83c9310c887efce9d68cae1f046b6511b" + ], + "data": "0x", + "blockHash": "0x3462645dfaa38b4a5343b50fb4737547cc7623f8019b0d3b2607146a2869f143", + "blockNumber": "0x46d145d", + "transactionHash": "0x7e5dfabad0685dbdab4f8a5e51917b89f053e3d44f0ae884442d3d93fbc79066", + "transactionIndex": "0x2", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0x3c553461a9c28DbCc81B9f7fA8281d70D0d18098", + "topics": [ + "0x649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed0" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f29f5fc83c9310c887efce9d68cae1f046b6511b", + "blockHash": "0x3462645dfaa38b4a5343b50fb4737547cc7623f8019b0d3b2607146a2869f143", + "blockNumber": "0x46d145d", + "transactionHash": "0x7e5dfabad0685dbdab4f8a5e51917b89f053e3d44f0ae884442d3d93fbc79066", + "transactionIndex": "0x2", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x3c553461a9c28DbCc81B9f7fA8281d70D0d18098", + "topics": [ + "0x1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f29f5fc83c9310c887efce9d68cae1f046b6511b", + "blockHash": "0x3462645dfaa38b4a5343b50fb4737547cc7623f8019b0d3b2607146a2869f143", + "blockNumber": "0x46d145d", + "transactionHash": "0x7e5dfabad0685dbdab4f8a5e51917b89f053e3d44f0ae884442d3d93fbc79066", + "transactionIndex": "0x2", + "logIndex": "0x2", + "removed": false + } + ], + "status": "0x1", + "root": "0xf76a917c52bc36a26d80596417be8cb27fb30094e38e3e7e5991cdc9cb54598d", + "logsBloom": "0x00020000000000000000000000000000000000000018000000800000000000000000000000000000000000000000000080000000000000000000000040000000000000000000000000000000000000000001000000000000000000000000000000000000020000000000000000000800000800000000000000000000000000400000000000000002000000000000000400001000080000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0" + }, + { + "transactionHash": "0xf9047d2a51c09e90a8dd93131ef38cccaec797f3c39afd0aaebb00b719daca69", + "transactionIndex": "0x3", + "blockHash": "0x3462645dfaa38b4a5343b50fb4737547cc7623f8019b0d3b2607146a2869f143", + "blockNumber": "0x46d145d", + "from": "0xf29F5fc83c9310c887EFce9D68Cae1F046B6511B", + "to": "0x3c553461a9c28DbCc81B9f7fA8281d70D0d18098", + "cumulativeGasUsed": "0xbb23", + "gasUsed": "0xbb23", + "contractAddress": "0x0000000000000000000000000000000000000000", + "logs": [ + { + "address": "0x3c553461a9c28DbCc81B9f7fA8281d70D0d18098", + "topics": [ + "0xcba86444cdc912f5fa5f53c20361b3517933eb181876b3f4a0d47478c6a3039b", + "0x000000000000000000000000f29f5fc83c9310c887efce9d68cae1f046b6511b" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x3462645dfaa38b4a5343b50fb4737547cc7623f8019b0d3b2607146a2869f143", + "blockNumber": "0x46d145d", + "transactionHash": "0xf9047d2a51c09e90a8dd93131ef38cccaec797f3c39afd0aaebb00b719daca69", + "transactionIndex": "0x3", + "logIndex": "0x3", + "removed": false + } + ], + "status": "0x1", + "root": "0x8d87d5b8e8b7714d0b9b4c5cfe36237c972e6dfc16055bb6ed8bf3f07838d40e", + "logsBloom": "0x00080000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000400000000000000000000080000000000000000000000000100000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0" + }, + { + "transactionHash": "0xde0e777d98382931ee7dc5e80d9c26b2958417b1b42f1a2dda092d0c1d94a67e", + "transactionIndex": "0x4", + "blockHash": "0x3462645dfaa38b4a5343b50fb4737547cc7623f8019b0d3b2607146a2869f143", + "blockNumber": "0x46d145d", + "from": "0xf29F5fc83c9310c887EFce9D68Cae1F046B6511B", + "to": "0x3c553461a9c28DbCc81B9f7fA8281d70D0d18098", + "cumulativeGasUsed": "0x1e533", + "gasUsed": "0x1e533", + "contractAddress": "0x0000000000000000000000000000000000000000", + "logs": [ + { + "address": "0x3c553461a9c28DbCc81B9f7fA8281d70D0d18098", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000007ebef2a4b1b09381ec5b9df8c5c6f2dbeca59c73" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x3462645dfaa38b4a5343b50fb4737547cc7623f8019b0d3b2607146a2869f143", + "blockNumber": "0x46d145d", + "transactionHash": "0xde0e777d98382931ee7dc5e80d9c26b2958417b1b42f1a2dda092d0c1d94a67e", + "transactionIndex": "0x4", + "logIndex": "0x4", + "removed": false + }, + { + "address": "0x3c553461a9c28DbCc81B9f7fA8281d70D0d18098", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x00000000000000000000000018fb38404dadee1727be4b805c5b242b5413fa40" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x3462645dfaa38b4a5343b50fb4737547cc7623f8019b0d3b2607146a2869f143", + "blockNumber": "0x46d145d", + "transactionHash": "0xde0e777d98382931ee7dc5e80d9c26b2958417b1b42f1a2dda092d0c1d94a67e", + "transactionIndex": "0x4", + "logIndex": "0x5", + "removed": false + }, + { + "address": "0x3c553461a9c28DbCc81B9f7fA8281d70D0d18098", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x00000000000000000000000081a1f39f7394c4849e4261aa02aac73865d13774" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x3462645dfaa38b4a5343b50fb4737547cc7623f8019b0d3b2607146a2869f143", + "blockNumber": "0x46d145d", + "transactionHash": "0xde0e777d98382931ee7dc5e80d9c26b2958417b1b42f1a2dda092d0c1d94a67e", + "transactionIndex": "0x4", + "logIndex": "0x6", + "removed": false + }, + { + "address": "0x3c553461a9c28DbCc81B9f7fA8281d70D0d18098", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000e03ba6851335d01d38dd6087c46c26008d16af92" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x3462645dfaa38b4a5343b50fb4737547cc7623f8019b0d3b2607146a2869f143", + "blockNumber": "0x46d145d", + "transactionHash": "0xde0e777d98382931ee7dc5e80d9c26b2958417b1b42f1a2dda092d0c1d94a67e", + "transactionIndex": "0x4", + "logIndex": "0x7", + "removed": false + } + ], + "status": "0x1", + "root": "0x7f9d40d37ea99f054d723912da527fd95f55bd52cd9507b23cb024881173197a", + "logsBloom": "0x00000000000000000000000000001000000000080008000000000000000000000000000001000000000000000000000080000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000008000000000000000000000000008000000000000000000000000000000000000000000002000000000000400000000000000000000100000000000000000000000080000000000000000000000000000000400000000000000100000000008000000000000000000000000041000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000", + "type": "0x0" + } + ], + "libraries": [ + "src/libraries/OrderEngine.sol:OrderEngine:0x4822f84ded2f60d2cbf0e353ab51b7b5d2e89935" + ], + "pending": [], + "returns": {}, + "timestamp": 1712128519, + "chain": 1890, + "multi": false, + "commit": "96d70ed" +} \ No newline at end of file diff --git a/broadcast/deployOrderEngine.s.sol/1891/run-1706874004.json b/broadcast/deployOrderEngine.s.sol/1891/run-1706874004.json new file mode 100644 index 0000000..2f37530 --- /dev/null +++ b/broadcast/deployOrderEngine.s.sol/1891/run-1706874004.json @@ -0,0 +1,120 @@ +{ + "transactions": [ + { + "hash": "0x3045fb09ab63eeba2d9fe20e2dd85ba41e37cc7c6bed790d7623c1011f041f6a", + "transactionType": "CREATE", + "contractName": "OrderEngine", + "contractAddress": "0x8adD30F1fE6535B0B6FCc4A7B495f000E1C4C5D4", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "gas": "0x59318", + "data": "0x6080806040523461001a576104219081610020823930815050f35b600080fdfe608080604052600436101561001357600080fd5b600090813560e01c90816395de97cc1461026557508063b91611f41461020e5763c3c1f2ec1461004257600080fd5b61004b36610283565b61005760a082016102d9565b9061006460c082016102d9565b9161007160e083016102d9565b9161007f61010082016102d9565b9061008d61012082016102d9565b90610140810135801515810361020a57610100610160936020986100bf6100b86101808701876102fa565b369161034b565b8a8151910120966100d76100b86101a08801886102fa565b8b8151910120986100ef6100b86101c08901896102fa565b8c81519101209a7f405c8d592eac87d960001fca48881b9679b0f000df8f68c6cef96559a6738fad6040519d8e01528c604089359101528c606060208a01359101528c608060408a01359101528c60a060608a01359101528c60c060808a01359101528c73ffffffffffffffffffffffffffffffffffffffff968780968180961660e085015216910152166101208c0152166101408a01521683880152151561018087015201356101a08501526101c08401526101e08301526102009081830152815261022081019080821067ffffffffffffffff8311176101dd5760209250816040528281519101208152f35b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8780fd5b50807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102625760206040517f405c8d592eac87d960001fca48881b9679b0f000df8f68c6cef96559a6738fad8152f35b80fd5b60209061027c60a061027636610283565b016102d9565b3b15158152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc906020828201126102d4576004359167ffffffffffffffff83116102d457826101e0920301126102d45760040190565b600080fd5b3573ffffffffffffffffffffffffffffffffffffffff811681036102d45790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102d4570180359067ffffffffffffffff82116102d4576020019181360383136102d457565b92919267ffffffffffffffff918281116103bc5760405192601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168401908111848210176103bc576040528294818452818301116102d4578281602093846000960137010152565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220fcf2e71d4fed2f596a1a465e75f3db24ccadee7f0fcc77fdb4822408a1d6c59964736f6c63430008150033", + "nonce": "0x153d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xb92528aaf622beacc6317348432f6f803a7fde4add084c6c4ee0b4caeba853fd", + "transactionType": "CREATE", + "contractName": "Predicates", + "contractAddress": "0x9680491850B5162C69786fdE9bd8bcd12d81b351", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "gas": "0x5dd9f", + "value": "0x0", + "data": "0x6080806040523461001657610464908161001c8239f35b600080fdfe604060808152600436101561001357600080fd5b6000803560e01c80633d303c92146102265780634f38e2b8146101f55780636fe7b0ba146101c457806374261145146101a8578063bf15fcd814610157578063bf797959146100dd578063bfa75143146100b45763ca4ece221461007657600080fd5b346100b15760206100948361008a366102e9565b9093919330610408565b819391936100a7575b5050519015158152f35b109150838061009d565b80fd5b5090346100d9576020906100d06100ca366102e9565b916103a8565b90519015158152f35b5080fd5b5090346100d95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d9576004359167ffffffffffffffff83116100b1575061013c6101356020933690600401610247565b9030610408565b8192919261014e575b50519015158152f35b15915038610145565b50346100b1575061017061016a3661027a565b91610408565b901561017f5760209151908152f35b600482517f1f1b8f61000000000000000000000000000000000000000000000000000000008152fd5b5090346100d9576020906100d06101be366102e9565b9161034f565b50346100b15760206101d98361008a366102e9565b819391936101eb575050519015158152f35b149150838061009d565b50346100b157602061020a8361008a366102e9565b8193919361021c575050519015158152f35b119150838061009d565b50346100b1575061023961016a3661027a565b825191151582526020820152f35b9181601f840112156102755782359167ffffffffffffffff8311610275576020838186019501011161027557565b600080fd5b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126102755760043573ffffffffffffffffffffffffffffffffffffffff8116810361027557916024359067ffffffffffffffff8211610275576102e591600401610247565b9091565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261027557600435916024359067ffffffffffffffff8211610275576102e591600401610247565b90939293848311610275578411610275578101920390565b9290919260005b63ffffffff821690811561039d5761013582610373928888610337565b81610392575b50610388579060201c90610356565b5050915050600190565b600191501438610379565b505050915050600090565b92909192600090815b63ffffffff82169081156103fc57610135826103ce928989610337565b90159081156103f0575b506103e7579060201c906103b1565b50509150915090565b600191501415386103d8565b50505050915050600190565b916000906020928294826040519283375afa60203d1416918261042757565b600051915056fea26469706673582212200458f875fadeeb52c1e054aa965d8292bed98c8059d7cbdeadebad7fe2b4b8e364736f6c63430008150033", + "nonce": "0x153e" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xa4ca388f57b5784b0a8669c41e64ef4e1c5d72e91fd1e65f4eac599e86d60f59", + "transactionType": "CREATE", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0xd84815be6330a61524893920bdff175F63a1104F", + "function": null, + "arguments": [ + "0x9680491850B5162C69786fdE9bd8bcd12d81b351", + "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8" + ], + "transaction": { + "type": "0x00", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "gas": "0x32a99e", + "value": "0x0", + "data": "0x61014034620002a6576001600160401b0362002e71601f38829003908101601f191684019083821185831017620002905780859160409485948552833981010312620002a65782516001600160a01b039384821691829003620002a6576020015190848216808303620002a6578351906200007a82620002ab565b601d825260208201957f456c656b7472696b204c696d6974204f726465722050726f746f636f6c0000008752600260208751620000b781620002ab565b828152019761763160f01b8952600160005560018060a01b031994858354168355600154338782161760015589519b3391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a351902097208760e05261010098818a524660a05260208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f998a84528983015260608201524660808201523060a082015260a0815260c08101928184109084111762000290578288525190206080523060c0526101209687528315801562000287575b620002785750600480548316919091179055600380549091169190911790558151600081526001600160a01b03821660208201527f1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc9162000234917f649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed090604090a18351600081526001600160a01b0390911660208201529081906040820190565b0390a15190612ba99283620002c8843960805183611e28015260a05183611f23015260c05183611df9015260e05183611e7701525182611e9d01525181611e540152f35b63d92e233d60e01b8152600490fd5b50811562000193565b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620002905760405256fe610180604052600436101561001357600080fd5b60003560e01c80630610f4a714611bda57806315169dec14611b9a5780632024cbc114611aa75780633644e51514611a845780633c3efab414611a5d5780635f2a6451146119a257806369328dec146119095780636d70f7ae146118ca5780636fda538f14611788578063715018a61461170c57806379ba5097146116065780638da5cb5b146115df5780638efede3d1461150d57806390d6e14c1461143b578063ab37f486146113fc578063c2ee3a08146113d9578063c415b95c146113b2578063cf0f969d14611386578063e30c39781461135f578063f2fde38b146112dd5763fe61e35c1461010457600080fd5b346104e45760e06003193601126104e45760043567ffffffffffffffff81116104e457610135903690600401611c8a565b610120526101605260243567ffffffffffffffff81116104e45761015d903690600401611c8a565b60e0526101405260443567ffffffffffffffff81116104e457610184903690600401611c8a565b60c0526101005260643567ffffffffffffffff81116104e4576101ab903690600401611c8a565b9060843567ffffffffffffffff81116104e4576101cc903690600401611c25565b9260a43567ffffffffffffffff81116104e4576101ed903690600401611c8a565b92909467ffffffffffffffff60c435116104e4576102103660c435600401611c8a565b93909533600052600760205260ff60406000205416156112ad5760026000541461124f57600260005561012051156112255760e0516101205114801590611217575b801561120b575b6108b65760005b6101205181106108e05750505060148110156104e9575b50505050505060005b610120518110610291576001600055005b6102a2816101205161016051611d5e565b906102b38160e05161014051611d2d565b356102c48260c05161010051611d2d565b356102ce846123ec565b670de0b6b3a7640000946103476102e86101208301611d3d565b6102f460e08401611d3d565b906001600160a01b03604051927fa9059cbb00000000000000000000000000000000000000000000000000000000602085015216602483015288860460448301526044825261034282611f5d565b6128f5565b816000526006602052604060002054956101c0820160146103688285611d9e565b905010156103f8575b5091600196827f2b15903b1f1516345ba547119efb6a90ccb8012f1803cc933c0a28b9291a5fef946001600160a01b036103b061010060c09701611d3d565b1696816001600160a01b036103c86101208601611d3d565b16996080956040519788526020880152046040860152046060840152803582840152013560a0820152a301610280565b966104166104106001600160a01b0395939985611d9e565b90612b11565b91610423819792976127ab565b169061043160a08601611d3d565b95823b156104e457848b97928992868c8b966040519c8d9889987fb6e1471a000000000000000000000000000000000000000000000000000000008a5204920490600488019661048097612774565b03815a6000948591f19283156104d8576001987f2b15903b1f1516345ba547119efb6a90ccb8012f1803cc933c0a28b9291a5fef9560c0956104c9575b50929450925096610371565b6104d290611f49565b386104bd565b6040513d6000823e3d90fd5b600080fd5b6104f291612b11565b90949160805293926105056080516127ab565b8281036108b65760005b81811061083d57506001600160a01b03608051163b156104e45760405160a0527f2499e3a20000000000000000000000000000000000000000000000000000000060a0515260c460a0510160c0600460a051015261012051905260e460a0510160e46101205160051b60a051010190610160519060005b610120518110610695575050506105d46105b860209260031960a051820301602460a051015260e05161014051612849565b60031960a051820301604460a051015260c05161010051612849565b60031960a051820301606460a051015282815201959060005b81811061066d57505050600094610634926106179260031960a051840301608460a0510152612849565b60031960a05182030160a460a051015260a0519360a05193611fc7565b0360a051836001600160a01b03608051165af180156104d85761065d575b388080808080610277565b61066860a051611f49565b610652565b9091966020806001926001600160a01b036106878c611c69565b1681520198019291016105ed565b9091927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c60a051820301835283357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe21610160513603018112156104e457602061083260019382936101605101906108136107f76101e084358452868501358785015260408501356040850152606080860135908501526080808601359085015260a06001600160a01b0361074a828801611c69565b16908501526001600160a01b0361076360c08701611c69565b1660c08501526001600160a01b0361077d60e08701611c69565b1660e08501526101006001600160a01b03610799828801611c69565b16908501526101206001600160a01b036107b4828801611c69565b16908501526101406107c7818701611c7d565b151590850152610160808601359085015261018090806107e9838801886127f9565b929093870152850191611fc7565b6101a0610806818601866127f9565b9185840390860152611fc7565b916108246101c091828101906127f9565b929091818503910152611fc7565b950193019101610586565b806108b0610856610851600194868c611d2d565b611d3d565b610861838888611d2d565b3590604051917fa9059cbb0000000000000000000000000000000000000000000000000000000060208401526001600160a01b0360805116602484015260448301526044825261034282611f5d565b0161050f565b60046040517ffc235960000000000000000000000000000000000000000000000000000000008152fd5b6108f1816101205161016051611d5e565b906109028160e05161014051611d2d565b35916109148260c05161010051611d2d565b3592858310156111dc5761092d8360051b860186611d9e565b90918592819661093c866123ec565b92602087013542116111ab5760608701351590811561119e575b8115611195575b50801561118d575b611163576001600160a01b0361097e6101208801611d3d565b16600052600560205260ff6040600020541615801561113a575b611110576109a96101008701611d3d565b6001600160a01b03806109bf6101208a01611d3d565b169116146110e6576001600160a01b036109db60a08801611d3d565b161580156110c9575b80156110ac575b8015611090575b6110665760c086016001600160a01b03610a0b82611d3d565b1615159081611049575b5061101f57826000526006602052604060002054604087013514610ff557610a406101408701611d51565b15610fb55750670de0b6b3a76400008702878104670de0b6b3a76400001488151715610f5c5784610a70916124db565b670de0b6b3a76400006040870135818102918183041490151715610f5c57610a9d906060880135906124db565b10610f8b578160005260066020526040600020805490670de0b6b3a764000089048201809211610f5c575560808501358015670de0b6b3a76400008904808302839004141715610f5c57610b0290604087013590670de0b6b3a76400008a04026124db565b826000526006602052604086013560406000205411610f3257670de0b6b3a7640000809195049704925b610b6e6020610b3b3689612160565b604051809381927f95de97cc000000000000000000000000000000000000000000000000000000008352600483016122e9565b0381738add30f1fe6535b0b6fcc4a7b495f000e1c4c5d45af49081156104d857600091610ef8575b5015610e9057610bfc916020916001600160a01b03610bb760a08a01611d3d565b16906040518095819482937f1626ba7e000000000000000000000000000000000000000000000000000000008452896004850152604060248501526044840191611fc7565b03915afa9081156104d857600091610e15575b507fffffffff000000000000000000000000000000000000000000000000000000007f1626ba7e00000000000000000000000000000000000000000000000000000000911603610deb575b6101808401610c698186611d9e565b9050610da3575b506101a084016014610c828287611d9e565b90501015610ced575b505060019450610cb590610ca26101008501611d3d565b90610caf60a08601611d3d565b91612886565b80610cc3575b505001610260565b610cd3610100610ce69301611d3d565b906001600160a01b036004541691612886565b3880610cbb565b610d026104106001600160a01b039287611d9e565b929091610d0e816127ab565b1690610d1c60a08801611d3d565b9084600052600660205260406000205494833b156104e457610d7587956000979388946040519e8f998a9889977f1ad047d200000000000000000000000000000000000000000000000000000000895260048901612774565b03925af19081156104d857600195610cb592610d94575b819250610c8b565b610d9d90611f49565b38610d8c565b610db0610db69186611d9e565b90612006565b15610dc15738610c70565b60046040517fb6629c02000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b90506020813d602011610e88575b81610e3060209383611f79565b810103126104e457517fffffffff00000000000000000000000000000000000000000000000000000000811681036104e4577fffffffff00000000000000000000000000000000000000000000000000000000610c0f565b3d9150610e23565b610ea2610eb092610ea892369161210b565b836126ad565b919091612514565b6001600160a01b0380610ec560a08801611d3d565b1691160315610c5a5760046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b90506020813d602011610f2a575b81610f1360209383611f79565b810103126104e457610f2490611fba565b38610b96565b3d9150610f06565b60046040517f17015bc1000000000000000000000000000000000000000000000000000000008152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60046040517fa0de07d3000000000000000000000000000000000000000000000000000000008152fd5b935091955082606085013511610f8b57604084013591670de0b6b3a764000060808601359483600052600660205260408701356040600020550496610b2c565b60046040517fca92fdbb000000000000000000000000000000000000000000000000000000008152fd5b60046040517fd4dfdafe000000000000000000000000000000000000000000000000000000008152fd5b90506001600160a01b0361105d3392611d3d565b16141538610a15565b60046040517fd92e233d000000000000000000000000000000000000000000000000000000008152fd5b506001600160a01b036110a560e08801611d3d565b16156109f2565b506001600160a01b036110c26101008801611d3d565b16156109eb565b506001600160a01b036110df6101208801611d3d565b16156109e4565b60046040517fdd807227000000000000000000000000000000000000000000000000000000008152fd5b60046040517ff84835a0000000000000000000000000000000000000000000000000000000008152fd5b506001600160a01b036111506101008801611d3d565b1660005260ff6040600020541615610998565b60046040517f1f2a2005000000000000000000000000000000000000000000000000000000008152fd5b508015610965565b9050153861095d565b6040880135159150610956565b602484604051907f2e775cae0000000000000000000000000000000000000000000000000000000082526004820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b508160c0511415610259565b5060c05160e0511415610252565b60046040517f521299a9000000000000000000000000000000000000000000000000000000008152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b60246040517fc0ae66ad000000000000000000000000000000000000000000000000000000008152336004820152fd5b346104e45760206003193601126104e4576112f6611c53565b6112fe611cbb565b6001600160a01b0380911690817fffffffffffffffffffffffff00000000000000000000000000000000000000006002541617600255600154167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700600080a3005b346104e45760006003193601126104e45760206001600160a01b0360025416604051908152f35b346104e45760206003193601126104e45760043560005260066020526020604060002054604051908152f35b346104e45760006003193601126104e45760206001600160a01b0360045416604051908152f35b346104e45760006003193601126104e4576020604051670de0b6b3a76400008152f35b346104e45760206003193601126104e4576001600160a01b0361141d611c53565b166000526005602052602060ff604060002054166040519015158152f35b346104e45760206003193601126104e4576004356001600160a01b038082168092036104e457611469611cbb565b811561106657600354908116908282146114e357604080516001600160a01b03938416815292841660208401527fffffffffffffffffffffffff0000000000000000000000000000000000000000927f1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc9190a11617600355005b60046040517fea0f8928000000000000000000000000000000000000000000000000000000008152fd5b346104e45760206003193601126104e457611526611c53565b61152e611cbb565b6001600160a01b0390818116918215611066576004549081168381146115b557604080516001600160a01b0392831681529390911660208401527fffffffffffffffffffffffff0000000000000000000000000000000000000000927f649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed09190a11617600455005b60046040517fa133328a000000000000000000000000000000000000000000000000000000008152fd5b346104e45760006003193601126104e45760206001600160a01b0360015416604051908152f35b346104e45760006003193601126104e4576002546001600160a01b033381831603611688577fffffffffffffffffffffffff00000000000000000000000000000000000000008092166002556001549133908316176001553391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152fd5b346104e45760006003193601126104e457611725611cbb565b60006001600160a01b037fffffffffffffffffffffffff00000000000000000000000000000000000000008060025416600255600154908116600155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346104e45760406003193601126104e45767ffffffffffffffff6004358181116104e4576117ba903690600401611c8a565b916024359081116104e4576117d3903690600401611c8a565b926117dc611cbb565b8015611225578381036108b65760005b8181106117f557005b6001600160a01b03908161180d610851838689611d2d565b1615611066576001917f49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e27441761184a611845848a89611d2d565b611d51565b918061185a61085186898c611d2d565b1660005261189d6020936005855260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b6118ab61085185888b611d2d565b16916118bb611845858b8a611d2d565b6040519015158152a2016117ec565b346104e45760206003193601126104e4576001600160a01b036118eb611c53565b166000526007602052602060ff604060002054166040519015158152f35b346104e45760606003193601126104e457611922611c53565b604435906001600160a01b03908183168093036104e457611941611cbb565b16908115801561199a575b6110665761199891604051917fa9059cbb000000000000000000000000000000000000000000000000000000006020840152602483015260243560448301526044825261034282611f5d565b005b50801561194c565b346104e4576119b036611bf2565b6119bc60a08201611d3d565b6001600160a01b0333911603611a33576119d5816123ec565b8060005260066020526040806000205492013591828114610ff55760407f87b5f0afdc3a118b68246141c5bd338672ab3e901be636e27116238d284de6ac918151908482526020820152a16000526006602052604060002055600080f35b60046040517f4ca88867000000000000000000000000000000000000000000000000000000008152fd5b346104e45760006003193601126104e45760206001600160a01b0360035416604051908152f35b346104e45760006003193601126104e4576020611a9f611def565b604051908152f35b346104e45760406003193601126104e457611ac0611c53565b60243590811515908183036104e4576001600160a01b0390611ae0611cbb565b16918215611066578260005260076020528160ff60406000205416151514611b70577fcba86444cdc912f5fa5f53c20361b3517933eb181876b3f4a0d47478c6a3039b91611b67602092856000526007845260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b604051908152a2005b60046040517f5b2625c0000000000000000000000000000000000000000000000000000000008152fd5b346104e45760206003193601126104e45760043567ffffffffffffffff81116104e457611bd0610db06020923690600401611c25565b6040519015158152f35b346104e4576020611a9f611bed36611bf2565b6123ec565b600319906020828201126104e4576004359167ffffffffffffffff83116104e457826101e0920301126104e45760040190565b9181601f840112156104e45782359167ffffffffffffffff83116104e457602083818601950101116104e457565b600435906001600160a01b03821682036104e457565b35906001600160a01b03821682036104e457565b359081151582036104e457565b9181601f840112156104e45782359167ffffffffffffffff83116104e4576020808501948460051b0101116104e457565b6001600160a01b03600154163303611ccf57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b91908110156111dc5760051b0190565b356001600160a01b03811681036104e45790565b3580151581036104e45790565b91908110156111dc5760051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe21813603018212156104e4570190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156104e4570180359067ffffffffffffffff82116104e4576020019181360383136104e457565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016301480611f20575b15611e4a577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117611ef15760405251902090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b507f00000000000000000000000000000000000000000000000000000000000000004614611e21565b67ffffffffffffffff8111611ef157604052565b6080810190811067ffffffffffffffff821117611ef157604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611ef157604052565b519081151582036104e457565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b9061205e906001600160a01b036003541692604093849283518095819482937f3d303c920000000000000000000000000000000000000000000000000000000084528560048501528760248501526044840191611fc7565b03915afa9081156120c6576000928392612086575b50508161207e575090565b600191501490565b9080939250813d83116120bf575b61209e8183611f79565b810103126120bc575060206120b282611fba565b9101513880612073565b80fd5b503d612094565b82513d6000823e3d90fd5b67ffffffffffffffff8111611ef157601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192612117826120d1565b916121256040519384611f79565b8294818452818301116104e4578281602093846000960137010152565b9080601f830112156104e45781602061215d9335910161210b565b90565b9190916101e09081818503126104e4576040519182019067ffffffffffffffff9183811083821117611ef157604052829481358452602082013560208501526040820135604085015260608201356060850152608082013560808501526121c960a08301611c69565b60a08501526121da60c08301611c69565b60c08501526121eb60e08301611c69565b60e08501526101006121fe818401611c69565b90850152610120612210818401611c69565b90850152610140612222818401611c7d565b908501526101608083013590850152610180808301358481116104e4578261224b918501612142565b908501526101a0808301358481116104e45782612269918501612142565b908501526101c092838301359081116104e4576122869201612142565b910152565b919082519283825260005b8481106122d55750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b602081830181015184830182015201612296565b9061215d916020815281516020820152602082015160408201526040820151606082015260608201516080820152608082015160a082015260a08201516001600160a01b0380911660c08301528060c08401511660e083015260e0830151816101009116818401528301518161012091168184015283015190610140911681830152820151610160901515818301528201516101809081830152820151906101e06123a16101a093828585015261020084019061228b565b928401516123dc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0946101c09286868303018487015261228b565b940151928285030191015261228b565b60206123fc61242f923690612160565b604051809381927fc3c1f2ec000000000000000000000000000000000000000000000000000000008352600483016122e9565b0381738add30f1fe6535b0b6fcc4a7b495f000e1c4c5d45af49081156104d8576000916124aa575b50612460611def565b906040519060208201927f1901000000000000000000000000000000000000000000000000000000000000845260228301526042820152604281526124a481611f5d565b51902090565b906020823d82116124d3575b816124c360209383611f79565b810103126120bc57505138612457565b3d91506124b6565b81156124e5570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600581101561267e57806125255750565b6001810361258b5760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152fd5b600281036125f15760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152fd5b6003146125fa57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9060418151146000146126db576126d7916020820151906060604084015193015160001a906126e5565b9091565b5050600090600290565b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083116127685791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561275b5781516001600160a01b03811615612755579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b926001600160a01b0361215d98969360c0969386521660208501526040840152606083015260808201528160a08201520191611fc7565b6001600160a01b03163081149081156127f0575b506127c657565b60046040517f8a5039c1000000000000000000000000000000000000000000000000000000008152fd5b905015386127bf565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156104e457016020813591019167ffffffffffffffff82116104e45781360383136104e457565b90918281527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83116104e45760209260051b809284830137010190565b91906001600160a01b03604051927f23b872dd00000000000000000000000000000000000000000000000000000000602085015216602483015230604483015260648201526064815260a081019181831067ffffffffffffffff841117611ef1576128f3926040526128f5565b565b6001600160a01b031690604051604081019080821067ffffffffffffffff831117611ef157612986916040526020938482527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564858301526000808587829751910182855af13d15612a3d573d9161296b836120d1565b926129796040519485611f79565b83523d868885013e612a41565b90815180612995575b50505050565b828491810103126120bc5750816129ac9101611fba565b156129b95780808061298f565b608490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b6060915b91929015612abc5750815115612a55575090565b3b15612a5e5790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b825190915015612acf5750805190602001fd5b612b0d906040519182917f08c379a000000000000000000000000000000000000000000000000000000000835260206004840152602483019061228b565b0390fd5b9160148210612b49577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec6014843560601c9401920190565b60046040517fef356d7a000000000000000000000000000000000000000000000000000000008152fdfea264697066735822122036b990b4d257fd6bd088a253c845303610cb8714d9fbcbe06b45ffce6d4443e564736f6c634300081500330000000000000000000000009680491850b5162c69786fde9bd8bcd12d81b3510000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8", + "nonce": "0x153f" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x025ace430ac11e21f1bf3431adacf088157bb0ce4f4efeb8cc06068eb7741a78", + "transactionType": "CALL", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0xd84815be6330a61524893920bdff175F63a1104F", + "function": "manageOperatorPrivilege(address,bool)", + "arguments": [ + "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "true" + ], + "transaction": { + "type": "0x00", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "to": "0xd84815be6330a61524893920bdff175f63a1104f", + "gas": "0x111af", + "value": "0x0", + "data": "0x2024cbc10000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b80000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x1540" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x57392b6664b455d65af13a7c142de28573603083f45443bc4b16620d0997e427", + "transactionType": "CALL", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0xd84815be6330a61524893920bdff175F63a1104F", + "function": "updateTokenWhitelist(address[],bool[])", + "arguments": [ + "[0x057e8e2bC40ECff87e6F9b28750D5E7AC004Eab9, 0x3cf2c147d43C98Fa96d267572e3FD44A4D3940d4, 0x4B6b9B31c72836806B0B1104Cf1CdAB8A0E3BD66, 0x9Ee1Aa18F3FEB435f811d6AE2F71B7D2a4Adce0B, 0x124ABC63F20c6e2088078bd61e2Db100Ff30836e, 0xecf6Bdde77C77863Ae842b145f9ab296E5eAcAF9, 0x8bA5b0452b0a4da211579AA2e105c3da7C0Ad36c, 0x8488c316e23504B8554e4BdE9651802CD45aea24, 0xeDc98fc6240671dF8e7eD035CE39143320c1A174, 0xeEf8e3c318fb3d86489FB258847d028adC629e14]", + "[true, true, true, true, true, true, true, true, true, true]" + ], + "transaction": { + "type": "0x00", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "to": "0xd84815be6330a61524893920bdff175f63a1104f", + "gas": "0x5c4d5", + "value": "0x0", + "data": "0x6fda538f000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000057e8e2bc40ecff87e6f9b28750d5e7ac004eab90000000000000000000000003cf2c147d43c98fa96d267572e3fd44a4d3940d40000000000000000000000004b6b9b31c72836806b0b1104cf1cdab8a0e3bd660000000000000000000000009ee1aa18f3feb435f811d6ae2f71b7d2a4adce0b000000000000000000000000124abc63f20c6e2088078bd61e2db100ff30836e000000000000000000000000ecf6bdde77c77863ae842b145f9ab296e5eacaf90000000000000000000000008ba5b0452b0a4da211579aa2e105c3da7c0ad36c0000000000000000000000008488c316e23504b8554e4bde9651802cd45aea24000000000000000000000000edc98fc6240671df8e7ed035ce39143320c1a174000000000000000000000000eef8e3c318fb3d86489fb258847d028adc629e14000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x1541" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [ + "src/libraries/OrderEngine.sol:OrderEngine:0x8add30f1fe6535b0b6fcc4a7b495f000e1c4c5d4" + ], + "pending": [ + "0x3045fb09ab63eeba2d9fe20e2dd85ba41e37cc7c6bed790d7623c1011f041f6a", + "0xb92528aaf622beacc6317348432f6f803a7fde4add084c6c4ee0b4caeba853fd", + "0xa4ca388f57b5784b0a8669c41e64ef4e1c5d72e91fd1e65f4eac599e86d60f59", + "0x025ace430ac11e21f1bf3431adacf088157bb0ce4f4efeb8cc06068eb7741a78", + "0x57392b6664b455d65af13a7c142de28573603083f45443bc4b16620d0997e427" + ], + "returns": {}, + "timestamp": 1706874004, + "chain": 1891, + "multi": false, + "commit": "2290b4d" +} \ No newline at end of file diff --git a/broadcast/deployOrderEngine.s.sol/1891/run-1706874010.json b/broadcast/deployOrderEngine.s.sol/1891/run-1706874010.json new file mode 100644 index 0000000..c42f8ba --- /dev/null +++ b/broadcast/deployOrderEngine.s.sol/1891/run-1706874010.json @@ -0,0 +1,393 @@ +{ + "transactions": [ + { + "hash": "0x3045fb09ab63eeba2d9fe20e2dd85ba41e37cc7c6bed790d7623c1011f041f6a", + "transactionType": "CREATE", + "contractName": "OrderEngine", + "contractAddress": "0x8adD30F1fE6535B0B6FCc4A7B495f000E1C4C5D4", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "gas": "0x59318", + "data": "0x6080806040523461001a576104219081610020823930815050f35b600080fdfe608080604052600436101561001357600080fd5b600090813560e01c90816395de97cc1461026557508063b91611f41461020e5763c3c1f2ec1461004257600080fd5b61004b36610283565b61005760a082016102d9565b9061006460c082016102d9565b9161007160e083016102d9565b9161007f61010082016102d9565b9061008d61012082016102d9565b90610140810135801515810361020a57610100610160936020986100bf6100b86101808701876102fa565b369161034b565b8a8151910120966100d76100b86101a08801886102fa565b8b8151910120986100ef6100b86101c08901896102fa565b8c81519101209a7f405c8d592eac87d960001fca48881b9679b0f000df8f68c6cef96559a6738fad6040519d8e01528c604089359101528c606060208a01359101528c608060408a01359101528c60a060608a01359101528c60c060808a01359101528c73ffffffffffffffffffffffffffffffffffffffff968780968180961660e085015216910152166101208c0152166101408a01521683880152151561018087015201356101a08501526101c08401526101e08301526102009081830152815261022081019080821067ffffffffffffffff8311176101dd5760209250816040528281519101208152f35b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8780fd5b50807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102625760206040517f405c8d592eac87d960001fca48881b9679b0f000df8f68c6cef96559a6738fad8152f35b80fd5b60209061027c60a061027636610283565b016102d9565b3b15158152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc906020828201126102d4576004359167ffffffffffffffff83116102d457826101e0920301126102d45760040190565b600080fd5b3573ffffffffffffffffffffffffffffffffffffffff811681036102d45790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102d4570180359067ffffffffffffffff82116102d4576020019181360383136102d457565b92919267ffffffffffffffff918281116103bc5760405192601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168401908111848210176103bc576040528294818452818301116102d4578281602093846000960137010152565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220fcf2e71d4fed2f596a1a465e75f3db24ccadee7f0fcc77fdb4822408a1d6c59964736f6c63430008150033", + "nonce": "0x153d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xb92528aaf622beacc6317348432f6f803a7fde4add084c6c4ee0b4caeba853fd", + "transactionType": "CREATE", + "contractName": "Predicates", + "contractAddress": "0x9680491850B5162C69786fdE9bd8bcd12d81b351", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "gas": "0x5dd9f", + "value": "0x0", + "data": "0x6080806040523461001657610464908161001c8239f35b600080fdfe604060808152600436101561001357600080fd5b6000803560e01c80633d303c92146102265780634f38e2b8146101f55780636fe7b0ba146101c457806374261145146101a8578063bf15fcd814610157578063bf797959146100dd578063bfa75143146100b45763ca4ece221461007657600080fd5b346100b15760206100948361008a366102e9565b9093919330610408565b819391936100a7575b5050519015158152f35b109150838061009d565b80fd5b5090346100d9576020906100d06100ca366102e9565b916103a8565b90519015158152f35b5080fd5b5090346100d95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d9576004359167ffffffffffffffff83116100b1575061013c6101356020933690600401610247565b9030610408565b8192919261014e575b50519015158152f35b15915038610145565b50346100b1575061017061016a3661027a565b91610408565b901561017f5760209151908152f35b600482517f1f1b8f61000000000000000000000000000000000000000000000000000000008152fd5b5090346100d9576020906100d06101be366102e9565b9161034f565b50346100b15760206101d98361008a366102e9565b819391936101eb575050519015158152f35b149150838061009d565b50346100b157602061020a8361008a366102e9565b8193919361021c575050519015158152f35b119150838061009d565b50346100b1575061023961016a3661027a565b825191151582526020820152f35b9181601f840112156102755782359167ffffffffffffffff8311610275576020838186019501011161027557565b600080fd5b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126102755760043573ffffffffffffffffffffffffffffffffffffffff8116810361027557916024359067ffffffffffffffff8211610275576102e591600401610247565b9091565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261027557600435916024359067ffffffffffffffff8211610275576102e591600401610247565b90939293848311610275578411610275578101920390565b9290919260005b63ffffffff821690811561039d5761013582610373928888610337565b81610392575b50610388579060201c90610356565b5050915050600190565b600191501438610379565b505050915050600090565b92909192600090815b63ffffffff82169081156103fc57610135826103ce928989610337565b90159081156103f0575b506103e7579060201c906103b1565b50509150915090565b600191501415386103d8565b50505050915050600190565b916000906020928294826040519283375afa60203d1416918261042757565b600051915056fea26469706673582212200458f875fadeeb52c1e054aa965d8292bed98c8059d7cbdeadebad7fe2b4b8e364736f6c63430008150033", + "nonce": "0x153e" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xa4ca388f57b5784b0a8669c41e64ef4e1c5d72e91fd1e65f4eac599e86d60f59", + "transactionType": "CREATE", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0xd84815be6330a61524893920bdff175F63a1104F", + "function": null, + "arguments": [ + "0x9680491850B5162C69786fdE9bd8bcd12d81b351", + "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8" + ], + "transaction": { + "type": "0x00", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "gas": "0x32a99e", + "value": "0x0", + "data": "0x61014034620002a6576001600160401b0362002e71601f38829003908101601f191684019083821185831017620002905780859160409485948552833981010312620002a65782516001600160a01b039384821691829003620002a6576020015190848216808303620002a6578351906200007a82620002ab565b601d825260208201957f456c656b7472696b204c696d6974204f726465722050726f746f636f6c0000008752600260208751620000b781620002ab565b828152019761763160f01b8952600160005560018060a01b031994858354168355600154338782161760015589519b3391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a351902097208760e05261010098818a524660a05260208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f998a84528983015260608201524660808201523060a082015260a0815260c08101928184109084111762000290578288525190206080523060c0526101209687528315801562000287575b620002785750600480548316919091179055600380549091169190911790558151600081526001600160a01b03821660208201527f1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc9162000234917f649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed090604090a18351600081526001600160a01b0390911660208201529081906040820190565b0390a15190612ba99283620002c8843960805183611e28015260a05183611f23015260c05183611df9015260e05183611e7701525182611e9d01525181611e540152f35b63d92e233d60e01b8152600490fd5b50811562000193565b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620002905760405256fe610180604052600436101561001357600080fd5b60003560e01c80630610f4a714611bda57806315169dec14611b9a5780632024cbc114611aa75780633644e51514611a845780633c3efab414611a5d5780635f2a6451146119a257806369328dec146119095780636d70f7ae146118ca5780636fda538f14611788578063715018a61461170c57806379ba5097146116065780638da5cb5b146115df5780638efede3d1461150d57806390d6e14c1461143b578063ab37f486146113fc578063c2ee3a08146113d9578063c415b95c146113b2578063cf0f969d14611386578063e30c39781461135f578063f2fde38b146112dd5763fe61e35c1461010457600080fd5b346104e45760e06003193601126104e45760043567ffffffffffffffff81116104e457610135903690600401611c8a565b610120526101605260243567ffffffffffffffff81116104e45761015d903690600401611c8a565b60e0526101405260443567ffffffffffffffff81116104e457610184903690600401611c8a565b60c0526101005260643567ffffffffffffffff81116104e4576101ab903690600401611c8a565b9060843567ffffffffffffffff81116104e4576101cc903690600401611c25565b9260a43567ffffffffffffffff81116104e4576101ed903690600401611c8a565b92909467ffffffffffffffff60c435116104e4576102103660c435600401611c8a565b93909533600052600760205260ff60406000205416156112ad5760026000541461124f57600260005561012051156112255760e0516101205114801590611217575b801561120b575b6108b65760005b6101205181106108e05750505060148110156104e9575b50505050505060005b610120518110610291576001600055005b6102a2816101205161016051611d5e565b906102b38160e05161014051611d2d565b356102c48260c05161010051611d2d565b356102ce846123ec565b670de0b6b3a7640000946103476102e86101208301611d3d565b6102f460e08401611d3d565b906001600160a01b03604051927fa9059cbb00000000000000000000000000000000000000000000000000000000602085015216602483015288860460448301526044825261034282611f5d565b6128f5565b816000526006602052604060002054956101c0820160146103688285611d9e565b905010156103f8575b5091600196827f2b15903b1f1516345ba547119efb6a90ccb8012f1803cc933c0a28b9291a5fef946001600160a01b036103b061010060c09701611d3d565b1696816001600160a01b036103c86101208601611d3d565b16996080956040519788526020880152046040860152046060840152803582840152013560a0820152a301610280565b966104166104106001600160a01b0395939985611d9e565b90612b11565b91610423819792976127ab565b169061043160a08601611d3d565b95823b156104e457848b97928992868c8b966040519c8d9889987fb6e1471a000000000000000000000000000000000000000000000000000000008a5204920490600488019661048097612774565b03815a6000948591f19283156104d8576001987f2b15903b1f1516345ba547119efb6a90ccb8012f1803cc933c0a28b9291a5fef9560c0956104c9575b50929450925096610371565b6104d290611f49565b386104bd565b6040513d6000823e3d90fd5b600080fd5b6104f291612b11565b90949160805293926105056080516127ab565b8281036108b65760005b81811061083d57506001600160a01b03608051163b156104e45760405160a0527f2499e3a20000000000000000000000000000000000000000000000000000000060a0515260c460a0510160c0600460a051015261012051905260e460a0510160e46101205160051b60a051010190610160519060005b610120518110610695575050506105d46105b860209260031960a051820301602460a051015260e05161014051612849565b60031960a051820301604460a051015260c05161010051612849565b60031960a051820301606460a051015282815201959060005b81811061066d57505050600094610634926106179260031960a051840301608460a0510152612849565b60031960a05182030160a460a051015260a0519360a05193611fc7565b0360a051836001600160a01b03608051165af180156104d85761065d575b388080808080610277565b61066860a051611f49565b610652565b9091966020806001926001600160a01b036106878c611c69565b1681520198019291016105ed565b9091927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c60a051820301835283357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe21610160513603018112156104e457602061083260019382936101605101906108136107f76101e084358452868501358785015260408501356040850152606080860135908501526080808601359085015260a06001600160a01b0361074a828801611c69565b16908501526001600160a01b0361076360c08701611c69565b1660c08501526001600160a01b0361077d60e08701611c69565b1660e08501526101006001600160a01b03610799828801611c69565b16908501526101206001600160a01b036107b4828801611c69565b16908501526101406107c7818701611c7d565b151590850152610160808601359085015261018090806107e9838801886127f9565b929093870152850191611fc7565b6101a0610806818601866127f9565b9185840390860152611fc7565b916108246101c091828101906127f9565b929091818503910152611fc7565b950193019101610586565b806108b0610856610851600194868c611d2d565b611d3d565b610861838888611d2d565b3590604051917fa9059cbb0000000000000000000000000000000000000000000000000000000060208401526001600160a01b0360805116602484015260448301526044825261034282611f5d565b0161050f565b60046040517ffc235960000000000000000000000000000000000000000000000000000000008152fd5b6108f1816101205161016051611d5e565b906109028160e05161014051611d2d565b35916109148260c05161010051611d2d565b3592858310156111dc5761092d8360051b860186611d9e565b90918592819661093c866123ec565b92602087013542116111ab5760608701351590811561119e575b8115611195575b50801561118d575b611163576001600160a01b0361097e6101208801611d3d565b16600052600560205260ff6040600020541615801561113a575b611110576109a96101008701611d3d565b6001600160a01b03806109bf6101208a01611d3d565b169116146110e6576001600160a01b036109db60a08801611d3d565b161580156110c9575b80156110ac575b8015611090575b6110665760c086016001600160a01b03610a0b82611d3d565b1615159081611049575b5061101f57826000526006602052604060002054604087013514610ff557610a406101408701611d51565b15610fb55750670de0b6b3a76400008702878104670de0b6b3a76400001488151715610f5c5784610a70916124db565b670de0b6b3a76400006040870135818102918183041490151715610f5c57610a9d906060880135906124db565b10610f8b578160005260066020526040600020805490670de0b6b3a764000089048201809211610f5c575560808501358015670de0b6b3a76400008904808302839004141715610f5c57610b0290604087013590670de0b6b3a76400008a04026124db565b826000526006602052604086013560406000205411610f3257670de0b6b3a7640000809195049704925b610b6e6020610b3b3689612160565b604051809381927f95de97cc000000000000000000000000000000000000000000000000000000008352600483016122e9565b0381738add30f1fe6535b0b6fcc4a7b495f000e1c4c5d45af49081156104d857600091610ef8575b5015610e9057610bfc916020916001600160a01b03610bb760a08a01611d3d565b16906040518095819482937f1626ba7e000000000000000000000000000000000000000000000000000000008452896004850152604060248501526044840191611fc7565b03915afa9081156104d857600091610e15575b507fffffffff000000000000000000000000000000000000000000000000000000007f1626ba7e00000000000000000000000000000000000000000000000000000000911603610deb575b6101808401610c698186611d9e565b9050610da3575b506101a084016014610c828287611d9e565b90501015610ced575b505060019450610cb590610ca26101008501611d3d565b90610caf60a08601611d3d565b91612886565b80610cc3575b505001610260565b610cd3610100610ce69301611d3d565b906001600160a01b036004541691612886565b3880610cbb565b610d026104106001600160a01b039287611d9e565b929091610d0e816127ab565b1690610d1c60a08801611d3d565b9084600052600660205260406000205494833b156104e457610d7587956000979388946040519e8f998a9889977f1ad047d200000000000000000000000000000000000000000000000000000000895260048901612774565b03925af19081156104d857600195610cb592610d94575b819250610c8b565b610d9d90611f49565b38610d8c565b610db0610db69186611d9e565b90612006565b15610dc15738610c70565b60046040517fb6629c02000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b90506020813d602011610e88575b81610e3060209383611f79565b810103126104e457517fffffffff00000000000000000000000000000000000000000000000000000000811681036104e4577fffffffff00000000000000000000000000000000000000000000000000000000610c0f565b3d9150610e23565b610ea2610eb092610ea892369161210b565b836126ad565b919091612514565b6001600160a01b0380610ec560a08801611d3d565b1691160315610c5a5760046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b90506020813d602011610f2a575b81610f1360209383611f79565b810103126104e457610f2490611fba565b38610b96565b3d9150610f06565b60046040517f17015bc1000000000000000000000000000000000000000000000000000000008152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60046040517fa0de07d3000000000000000000000000000000000000000000000000000000008152fd5b935091955082606085013511610f8b57604084013591670de0b6b3a764000060808601359483600052600660205260408701356040600020550496610b2c565b60046040517fca92fdbb000000000000000000000000000000000000000000000000000000008152fd5b60046040517fd4dfdafe000000000000000000000000000000000000000000000000000000008152fd5b90506001600160a01b0361105d3392611d3d565b16141538610a15565b60046040517fd92e233d000000000000000000000000000000000000000000000000000000008152fd5b506001600160a01b036110a560e08801611d3d565b16156109f2565b506001600160a01b036110c26101008801611d3d565b16156109eb565b506001600160a01b036110df6101208801611d3d565b16156109e4565b60046040517fdd807227000000000000000000000000000000000000000000000000000000008152fd5b60046040517ff84835a0000000000000000000000000000000000000000000000000000000008152fd5b506001600160a01b036111506101008801611d3d565b1660005260ff6040600020541615610998565b60046040517f1f2a2005000000000000000000000000000000000000000000000000000000008152fd5b508015610965565b9050153861095d565b6040880135159150610956565b602484604051907f2e775cae0000000000000000000000000000000000000000000000000000000082526004820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b508160c0511415610259565b5060c05160e0511415610252565b60046040517f521299a9000000000000000000000000000000000000000000000000000000008152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b60246040517fc0ae66ad000000000000000000000000000000000000000000000000000000008152336004820152fd5b346104e45760206003193601126104e4576112f6611c53565b6112fe611cbb565b6001600160a01b0380911690817fffffffffffffffffffffffff00000000000000000000000000000000000000006002541617600255600154167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700600080a3005b346104e45760006003193601126104e45760206001600160a01b0360025416604051908152f35b346104e45760206003193601126104e45760043560005260066020526020604060002054604051908152f35b346104e45760006003193601126104e45760206001600160a01b0360045416604051908152f35b346104e45760006003193601126104e4576020604051670de0b6b3a76400008152f35b346104e45760206003193601126104e4576001600160a01b0361141d611c53565b166000526005602052602060ff604060002054166040519015158152f35b346104e45760206003193601126104e4576004356001600160a01b038082168092036104e457611469611cbb565b811561106657600354908116908282146114e357604080516001600160a01b03938416815292841660208401527fffffffffffffffffffffffff0000000000000000000000000000000000000000927f1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc9190a11617600355005b60046040517fea0f8928000000000000000000000000000000000000000000000000000000008152fd5b346104e45760206003193601126104e457611526611c53565b61152e611cbb565b6001600160a01b0390818116918215611066576004549081168381146115b557604080516001600160a01b0392831681529390911660208401527fffffffffffffffffffffffff0000000000000000000000000000000000000000927f649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed09190a11617600455005b60046040517fa133328a000000000000000000000000000000000000000000000000000000008152fd5b346104e45760006003193601126104e45760206001600160a01b0360015416604051908152f35b346104e45760006003193601126104e4576002546001600160a01b033381831603611688577fffffffffffffffffffffffff00000000000000000000000000000000000000008092166002556001549133908316176001553391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152fd5b346104e45760006003193601126104e457611725611cbb565b60006001600160a01b037fffffffffffffffffffffffff00000000000000000000000000000000000000008060025416600255600154908116600155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346104e45760406003193601126104e45767ffffffffffffffff6004358181116104e4576117ba903690600401611c8a565b916024359081116104e4576117d3903690600401611c8a565b926117dc611cbb565b8015611225578381036108b65760005b8181106117f557005b6001600160a01b03908161180d610851838689611d2d565b1615611066576001917f49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e27441761184a611845848a89611d2d565b611d51565b918061185a61085186898c611d2d565b1660005261189d6020936005855260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b6118ab61085185888b611d2d565b16916118bb611845858b8a611d2d565b6040519015158152a2016117ec565b346104e45760206003193601126104e4576001600160a01b036118eb611c53565b166000526007602052602060ff604060002054166040519015158152f35b346104e45760606003193601126104e457611922611c53565b604435906001600160a01b03908183168093036104e457611941611cbb565b16908115801561199a575b6110665761199891604051917fa9059cbb000000000000000000000000000000000000000000000000000000006020840152602483015260243560448301526044825261034282611f5d565b005b50801561194c565b346104e4576119b036611bf2565b6119bc60a08201611d3d565b6001600160a01b0333911603611a33576119d5816123ec565b8060005260066020526040806000205492013591828114610ff55760407f87b5f0afdc3a118b68246141c5bd338672ab3e901be636e27116238d284de6ac918151908482526020820152a16000526006602052604060002055600080f35b60046040517f4ca88867000000000000000000000000000000000000000000000000000000008152fd5b346104e45760006003193601126104e45760206001600160a01b0360035416604051908152f35b346104e45760006003193601126104e4576020611a9f611def565b604051908152f35b346104e45760406003193601126104e457611ac0611c53565b60243590811515908183036104e4576001600160a01b0390611ae0611cbb565b16918215611066578260005260076020528160ff60406000205416151514611b70577fcba86444cdc912f5fa5f53c20361b3517933eb181876b3f4a0d47478c6a3039b91611b67602092856000526007845260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b604051908152a2005b60046040517f5b2625c0000000000000000000000000000000000000000000000000000000008152fd5b346104e45760206003193601126104e45760043567ffffffffffffffff81116104e457611bd0610db06020923690600401611c25565b6040519015158152f35b346104e4576020611a9f611bed36611bf2565b6123ec565b600319906020828201126104e4576004359167ffffffffffffffff83116104e457826101e0920301126104e45760040190565b9181601f840112156104e45782359167ffffffffffffffff83116104e457602083818601950101116104e457565b600435906001600160a01b03821682036104e457565b35906001600160a01b03821682036104e457565b359081151582036104e457565b9181601f840112156104e45782359167ffffffffffffffff83116104e4576020808501948460051b0101116104e457565b6001600160a01b03600154163303611ccf57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b91908110156111dc5760051b0190565b356001600160a01b03811681036104e45790565b3580151581036104e45790565b91908110156111dc5760051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe21813603018212156104e4570190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156104e4570180359067ffffffffffffffff82116104e4576020019181360383136104e457565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016301480611f20575b15611e4a577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117611ef15760405251902090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b507f00000000000000000000000000000000000000000000000000000000000000004614611e21565b67ffffffffffffffff8111611ef157604052565b6080810190811067ffffffffffffffff821117611ef157604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611ef157604052565b519081151582036104e457565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b9061205e906001600160a01b036003541692604093849283518095819482937f3d303c920000000000000000000000000000000000000000000000000000000084528560048501528760248501526044840191611fc7565b03915afa9081156120c6576000928392612086575b50508161207e575090565b600191501490565b9080939250813d83116120bf575b61209e8183611f79565b810103126120bc575060206120b282611fba565b9101513880612073565b80fd5b503d612094565b82513d6000823e3d90fd5b67ffffffffffffffff8111611ef157601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192612117826120d1565b916121256040519384611f79565b8294818452818301116104e4578281602093846000960137010152565b9080601f830112156104e45781602061215d9335910161210b565b90565b9190916101e09081818503126104e4576040519182019067ffffffffffffffff9183811083821117611ef157604052829481358452602082013560208501526040820135604085015260608201356060850152608082013560808501526121c960a08301611c69565b60a08501526121da60c08301611c69565b60c08501526121eb60e08301611c69565b60e08501526101006121fe818401611c69565b90850152610120612210818401611c69565b90850152610140612222818401611c7d565b908501526101608083013590850152610180808301358481116104e4578261224b918501612142565b908501526101a0808301358481116104e45782612269918501612142565b908501526101c092838301359081116104e4576122869201612142565b910152565b919082519283825260005b8481106122d55750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b602081830181015184830182015201612296565b9061215d916020815281516020820152602082015160408201526040820151606082015260608201516080820152608082015160a082015260a08201516001600160a01b0380911660c08301528060c08401511660e083015260e0830151816101009116818401528301518161012091168184015283015190610140911681830152820151610160901515818301528201516101809081830152820151906101e06123a16101a093828585015261020084019061228b565b928401516123dc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0946101c09286868303018487015261228b565b940151928285030191015261228b565b60206123fc61242f923690612160565b604051809381927fc3c1f2ec000000000000000000000000000000000000000000000000000000008352600483016122e9565b0381738add30f1fe6535b0b6fcc4a7b495f000e1c4c5d45af49081156104d8576000916124aa575b50612460611def565b906040519060208201927f1901000000000000000000000000000000000000000000000000000000000000845260228301526042820152604281526124a481611f5d565b51902090565b906020823d82116124d3575b816124c360209383611f79565b810103126120bc57505138612457565b3d91506124b6565b81156124e5570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600581101561267e57806125255750565b6001810361258b5760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152fd5b600281036125f15760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152fd5b6003146125fa57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9060418151146000146126db576126d7916020820151906060604084015193015160001a906126e5565b9091565b5050600090600290565b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083116127685791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561275b5781516001600160a01b03811615612755579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b926001600160a01b0361215d98969360c0969386521660208501526040840152606083015260808201528160a08201520191611fc7565b6001600160a01b03163081149081156127f0575b506127c657565b60046040517f8a5039c1000000000000000000000000000000000000000000000000000000008152fd5b905015386127bf565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156104e457016020813591019167ffffffffffffffff82116104e45781360383136104e457565b90918281527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83116104e45760209260051b809284830137010190565b91906001600160a01b03604051927f23b872dd00000000000000000000000000000000000000000000000000000000602085015216602483015230604483015260648201526064815260a081019181831067ffffffffffffffff841117611ef1576128f3926040526128f5565b565b6001600160a01b031690604051604081019080821067ffffffffffffffff831117611ef157612986916040526020938482527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564858301526000808587829751910182855af13d15612a3d573d9161296b836120d1565b926129796040519485611f79565b83523d868885013e612a41565b90815180612995575b50505050565b828491810103126120bc5750816129ac9101611fba565b156129b95780808061298f565b608490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b6060915b91929015612abc5750815115612a55575090565b3b15612a5e5790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b825190915015612acf5750805190602001fd5b612b0d906040519182917f08c379a000000000000000000000000000000000000000000000000000000000835260206004840152602483019061228b565b0390fd5b9160148210612b49577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec6014843560601c9401920190565b60046040517fef356d7a000000000000000000000000000000000000000000000000000000008152fdfea264697066735822122036b990b4d257fd6bd088a253c845303610cb8714d9fbcbe06b45ffce6d4443e564736f6c634300081500330000000000000000000000009680491850b5162c69786fde9bd8bcd12d81b3510000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8", + "nonce": "0x153f" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x025ace430ac11e21f1bf3431adacf088157bb0ce4f4efeb8cc06068eb7741a78", + "transactionType": "CALL", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0xd84815be6330a61524893920bdff175F63a1104F", + "function": "manageOperatorPrivilege(address,bool)", + "arguments": [ + "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "true" + ], + "transaction": { + "type": "0x00", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "to": "0xd84815be6330a61524893920bdff175f63a1104f", + "gas": "0x111af", + "value": "0x0", + "data": "0x2024cbc10000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b80000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x1540" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x57392b6664b455d65af13a7c142de28573603083f45443bc4b16620d0997e427", + "transactionType": "CALL", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0xd84815be6330a61524893920bdff175F63a1104F", + "function": "updateTokenWhitelist(address[],bool[])", + "arguments": [ + "[0x057e8e2bC40ECff87e6F9b28750D5E7AC004Eab9, 0x3cf2c147d43C98Fa96d267572e3FD44A4D3940d4, 0x4B6b9B31c72836806B0B1104Cf1CdAB8A0E3BD66, 0x9Ee1Aa18F3FEB435f811d6AE2F71B7D2a4Adce0B, 0x124ABC63F20c6e2088078bd61e2Db100Ff30836e, 0xecf6Bdde77C77863Ae842b145f9ab296E5eAcAF9, 0x8bA5b0452b0a4da211579AA2e105c3da7C0Ad36c, 0x8488c316e23504B8554e4BdE9651802CD45aea24, 0xeDc98fc6240671dF8e7eD035CE39143320c1A174, 0xeEf8e3c318fb3d86489FB258847d028adC629e14]", + "[true, true, true, true, true, true, true, true, true, true]" + ], + "transaction": { + "type": "0x00", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "to": "0xd84815be6330a61524893920bdff175f63a1104f", + "gas": "0x5c4d5", + "value": "0x0", + "data": "0x6fda538f000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000057e8e2bc40ecff87e6f9b28750d5e7ac004eab90000000000000000000000003cf2c147d43c98fa96d267572e3fd44a4d3940d40000000000000000000000004b6b9b31c72836806b0b1104cf1cdab8a0e3bd660000000000000000000000009ee1aa18f3feb435f811d6ae2f71b7d2a4adce0b000000000000000000000000124abc63f20c6e2088078bd61e2db100ff30836e000000000000000000000000ecf6bdde77c77863ae842b145f9ab296e5eacaf90000000000000000000000008ba5b0452b0a4da211579aa2e105c3da7c0ad36c0000000000000000000000008488c316e23504b8554e4bde9651802cd45aea24000000000000000000000000edc98fc6240671df8e7ed035ce39143320c1a174000000000000000000000000eef8e3c318fb3d86489fb258847d028adc629e14000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x1541" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0x3045fb09ab63eeba2d9fe20e2dd85ba41e37cc7c6bed790d7623c1011f041f6a", + "transactionIndex": "0x0", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": null, + "cumulativeGasUsed": "0x44a0a", + "gasUsed": "0x44a0a", + "contractAddress": "0x8adD30F1fE6535B0B6FCc4A7B495f000E1C4C5D4", + "logs": [], + "status": "0x1", + "root": "0x217dea2c51f905de5f26ecc121fe3c7648b606aaef7fc221790d0a7fbcffed17", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0" + }, + { + "transactionHash": "0xb92528aaf622beacc6317348432f6f803a7fde4add084c6c4ee0b4caeba853fd", + "transactionIndex": "0x1", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": null, + "cumulativeGasUsed": "0x48360", + "gasUsed": "0x48360", + "contractAddress": "0x9680491850B5162C69786fdE9bd8bcd12d81b351", + "logs": [], + "status": "0x1", + "root": "0xcf77317e182c2a4cfa7bbfb3eaf4323d0a76898642d6b0a044b9ccf0bdcc81b7", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0" + }, + { + "transactionHash": "0xa4ca388f57b5784b0a8669c41e64ef4e1c5d72e91fd1e65f4eac599e86d60f59", + "transactionIndex": "0x2", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": null, + "cumulativeGasUsed": "0x26fb8d", + "gasUsed": "0x26fb8d", + "contractAddress": "0xd84815be6330a61524893920bdff175F63a1104F", + "logs": [ + { + "address": "0xd84815be6330a61524893920bdff175F63a1104F", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8" + ], + "data": "0x", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "transactionHash": "0xa4ca388f57b5784b0a8669c41e64ef4e1c5d72e91fd1e65f4eac599e86d60f59", + "transactionIndex": "0x2", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xd84815be6330a61524893920bdff175F63a1104F", + "topics": [ + "0x649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed0" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "transactionHash": "0xa4ca388f57b5784b0a8669c41e64ef4e1c5d72e91fd1e65f4eac599e86d60f59", + "transactionIndex": "0x2", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0xd84815be6330a61524893920bdff175F63a1104F", + "topics": [ + "0x1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "transactionHash": "0xa4ca388f57b5784b0a8669c41e64ef4e1c5d72e91fd1e65f4eac599e86d60f59", + "transactionIndex": "0x2", + "logIndex": "0x2", + "removed": false + } + ], + "status": "0x1", + "root": "0xee29c21a2e466aaac3da0bca9337b3b0a42ed5b1fa0f7f7ebda7075d0434600a", + "logsBloom": "0x00020000000000000000000000800000000000000010000000800000080000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000001000000000000000000000000000000000000020000000000000000000800000800000000000000000000000000400000000000000000000000000000000000001000080000000000000000000000000000000000000000000000000000020000000000000000000000080000000000400000000000000000000000000000000000000000000000000000000020000000000000000001000000000000000000000000000000000000000000000000", + "type": "0x0" + }, + { + "transactionHash": "0x025ace430ac11e21f1bf3431adacf088157bb0ce4f4efeb8cc06068eb7741a78", + "transactionIndex": "0x3", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": "0xd84815be6330a61524893920bdff175F63a1104F", + "cumulativeGasUsed": "0xbb23", + "gasUsed": "0xbb23", + "contractAddress": "0x0000000000000000000000000000000000000000", + "logs": [ + { + "address": "0xd84815be6330a61524893920bdff175F63a1104F", + "topics": [ + "0xcba86444cdc912f5fa5f53c20361b3517933eb181876b3f4a0d47478c6a3039b", + "0x0000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "transactionHash": "0x025ace430ac11e21f1bf3431adacf088157bb0ce4f4efeb8cc06068eb7741a78", + "transactionIndex": "0x3", + "logIndex": "0x3", + "removed": false + } + ], + "status": "0x1", + "root": "0x1a761c498f2907d75f2a3a779d3d98a445528fb29c83f40f693a1c4a192884e9", + "logsBloom": "0x00080000000000000000000000800000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000100000000000000020000000000000000000000080000000000400000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000", + "type": "0x0" + }, + { + "transactionHash": "0x57392b6664b455d65af13a7c142de28573603083f45443bc4b16620d0997e427", + "transactionIndex": "0x4", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": "0xd84815be6330a61524893920bdff175F63a1104F", + "cumulativeGasUsed": "0x42d34", + "gasUsed": "0x42d34", + "contractAddress": "0x0000000000000000000000000000000000000000", + "logs": [ + { + "address": "0xd84815be6330a61524893920bdff175F63a1104F", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000057e8e2bc40ecff87e6f9b28750d5e7ac004eab9" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "transactionHash": "0x57392b6664b455d65af13a7c142de28573603083f45443bc4b16620d0997e427", + "transactionIndex": "0x4", + "logIndex": "0x4", + "removed": false + }, + { + "address": "0xd84815be6330a61524893920bdff175F63a1104F", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000003cf2c147d43c98fa96d267572e3fd44a4d3940d4" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "transactionHash": "0x57392b6664b455d65af13a7c142de28573603083f45443bc4b16620d0997e427", + "transactionIndex": "0x4", + "logIndex": "0x5", + "removed": false + }, + { + "address": "0xd84815be6330a61524893920bdff175F63a1104F", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000004b6b9b31c72836806b0b1104cf1cdab8a0e3bd66" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "transactionHash": "0x57392b6664b455d65af13a7c142de28573603083f45443bc4b16620d0997e427", + "transactionIndex": "0x4", + "logIndex": "0x6", + "removed": false + }, + { + "address": "0xd84815be6330a61524893920bdff175F63a1104F", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000009ee1aa18f3feb435f811d6ae2f71b7d2a4adce0b" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "transactionHash": "0x57392b6664b455d65af13a7c142de28573603083f45443bc4b16620d0997e427", + "transactionIndex": "0x4", + "logIndex": "0x7", + "removed": false + }, + { + "address": "0xd84815be6330a61524893920bdff175F63a1104F", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000124abc63f20c6e2088078bd61e2db100ff30836e" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "transactionHash": "0x57392b6664b455d65af13a7c142de28573603083f45443bc4b16620d0997e427", + "transactionIndex": "0x4", + "logIndex": "0x8", + "removed": false + }, + { + "address": "0xd84815be6330a61524893920bdff175F63a1104F", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000ecf6bdde77c77863ae842b145f9ab296e5eacaf9" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "transactionHash": "0x57392b6664b455d65af13a7c142de28573603083f45443bc4b16620d0997e427", + "transactionIndex": "0x4", + "logIndex": "0x9", + "removed": false + }, + { + "address": "0xd84815be6330a61524893920bdff175F63a1104F", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000008ba5b0452b0a4da211579aa2e105c3da7c0ad36c" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "transactionHash": "0x57392b6664b455d65af13a7c142de28573603083f45443bc4b16620d0997e427", + "transactionIndex": "0x4", + "logIndex": "0xa", + "removed": false + }, + { + "address": "0xd84815be6330a61524893920bdff175F63a1104F", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000008488c316e23504b8554e4bde9651802cd45aea24" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "transactionHash": "0x57392b6664b455d65af13a7c142de28573603083f45443bc4b16620d0997e427", + "transactionIndex": "0x4", + "logIndex": "0xb", + "removed": false + }, + { + "address": "0xd84815be6330a61524893920bdff175F63a1104F", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000edc98fc6240671df8e7ed035ce39143320c1a174" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "transactionHash": "0x57392b6664b455d65af13a7c142de28573603083f45443bc4b16620d0997e427", + "transactionIndex": "0x4", + "logIndex": "0xc", + "removed": false + }, + { + "address": "0xd84815be6330a61524893920bdff175F63a1104F", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000eef8e3c318fb3d86489fb258847d028adc629e14" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "transactionHash": "0x57392b6664b455d65af13a7c142de28573603083f45443bc4b16620d0997e427", + "transactionIndex": "0x4", + "logIndex": "0xd", + "removed": false + } + ], + "status": "0x1", + "root": "0x211fa834f9195f8187549c38a54e42b0413bbef5bfe3b808e49b85157c6e6f7e", + "logsBloom": "0x00000002100000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000020000000000008000000000000000000000000000000110000000000000000000000000000000000000800000002000020000001000010020000000000000000000000000000000000000200002001000800000000020002000000000000000000000000000000000000040000000000000080000020000000000000020000000000080000000800080000000000008000000000400004040000000001000000000000000800000000800000000000000000000001000000000000000800000000000000002000000000000000", + "type": "0x0" + } + ], + "libraries": [ + "src/libraries/OrderEngine.sol:OrderEngine:0x8add30f1fe6535b0b6fcc4a7b495f000e1c4c5d4" + ], + "pending": [], + "returns": {}, + "timestamp": 1706874010, + "chain": 1891, + "multi": false, + "commit": "2290b4d" +} \ No newline at end of file diff --git a/broadcast/deployOrderEngine.s.sol/1891/run-1706874048.json b/broadcast/deployOrderEngine.s.sol/1891/run-1706874048.json new file mode 100644 index 0000000..19703f3 --- /dev/null +++ b/broadcast/deployOrderEngine.s.sol/1891/run-1706874048.json @@ -0,0 +1,393 @@ +{ + "transactions": [ + { + "hash": "0x3045fb09ab63eeba2d9fe20e2dd85ba41e37cc7c6bed790d7623c1011f041f6a", + "transactionType": "CREATE", + "contractName": "OrderEngine", + "contractAddress": "0x8adD30F1fE6535B0B6FCc4A7B495f000E1C4C5D4", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "gas": "0x59318", + "data": "0x6080806040523461001a576104219081610020823930815050f35b600080fdfe608080604052600436101561001357600080fd5b600090813560e01c90816395de97cc1461026557508063b91611f41461020e5763c3c1f2ec1461004257600080fd5b61004b36610283565b61005760a082016102d9565b9061006460c082016102d9565b9161007160e083016102d9565b9161007f61010082016102d9565b9061008d61012082016102d9565b90610140810135801515810361020a57610100610160936020986100bf6100b86101808701876102fa565b369161034b565b8a8151910120966100d76100b86101a08801886102fa565b8b8151910120986100ef6100b86101c08901896102fa565b8c81519101209a7f405c8d592eac87d960001fca48881b9679b0f000df8f68c6cef96559a6738fad6040519d8e01528c604089359101528c606060208a01359101528c608060408a01359101528c60a060608a01359101528c60c060808a01359101528c73ffffffffffffffffffffffffffffffffffffffff968780968180961660e085015216910152166101208c0152166101408a01521683880152151561018087015201356101a08501526101c08401526101e08301526102009081830152815261022081019080821067ffffffffffffffff8311176101dd5760209250816040528281519101208152f35b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8780fd5b50807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102625760206040517f405c8d592eac87d960001fca48881b9679b0f000df8f68c6cef96559a6738fad8152f35b80fd5b60209061027c60a061027636610283565b016102d9565b3b15158152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc906020828201126102d4576004359167ffffffffffffffff83116102d457826101e0920301126102d45760040190565b600080fd5b3573ffffffffffffffffffffffffffffffffffffffff811681036102d45790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102d4570180359067ffffffffffffffff82116102d4576020019181360383136102d457565b92919267ffffffffffffffff918281116103bc5760405192601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168401908111848210176103bc576040528294818452818301116102d4578281602093846000960137010152565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220fcf2e71d4fed2f596a1a465e75f3db24ccadee7f0fcc77fdb4822408a1d6c59964736f6c63430008150033", + "nonce": "0x153d" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xb92528aaf622beacc6317348432f6f803a7fde4add084c6c4ee0b4caeba853fd", + "transactionType": "CREATE", + "contractName": "Predicates", + "contractAddress": "0x9680491850B5162C69786fdE9bd8bcd12d81b351", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "gas": "0x5dd9f", + "value": "0x0", + "data": "0x6080806040523461001657610464908161001c8239f35b600080fdfe604060808152600436101561001357600080fd5b6000803560e01c80633d303c92146102265780634f38e2b8146101f55780636fe7b0ba146101c457806374261145146101a8578063bf15fcd814610157578063bf797959146100dd578063bfa75143146100b45763ca4ece221461007657600080fd5b346100b15760206100948361008a366102e9565b9093919330610408565b819391936100a7575b5050519015158152f35b109150838061009d565b80fd5b5090346100d9576020906100d06100ca366102e9565b916103a8565b90519015158152f35b5080fd5b5090346100d95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d9576004359167ffffffffffffffff83116100b1575061013c6101356020933690600401610247565b9030610408565b8192919261014e575b50519015158152f35b15915038610145565b50346100b1575061017061016a3661027a565b91610408565b901561017f5760209151908152f35b600482517f1f1b8f61000000000000000000000000000000000000000000000000000000008152fd5b5090346100d9576020906100d06101be366102e9565b9161034f565b50346100b15760206101d98361008a366102e9565b819391936101eb575050519015158152f35b149150838061009d565b50346100b157602061020a8361008a366102e9565b8193919361021c575050519015158152f35b119150838061009d565b50346100b1575061023961016a3661027a565b825191151582526020820152f35b9181601f840112156102755782359167ffffffffffffffff8311610275576020838186019501011161027557565b600080fd5b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126102755760043573ffffffffffffffffffffffffffffffffffffffff8116810361027557916024359067ffffffffffffffff8211610275576102e591600401610247565b9091565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261027557600435916024359067ffffffffffffffff8211610275576102e591600401610247565b90939293848311610275578411610275578101920390565b9290919260005b63ffffffff821690811561039d5761013582610373928888610337565b81610392575b50610388579060201c90610356565b5050915050600190565b600191501438610379565b505050915050600090565b92909192600090815b63ffffffff82169081156103fc57610135826103ce928989610337565b90159081156103f0575b506103e7579060201c906103b1565b50509150915090565b600191501415386103d8565b50505050915050600190565b916000906020928294826040519283375afa60203d1416918261042757565b600051915056fea26469706673582212200458f875fadeeb52c1e054aa965d8292bed98c8059d7cbdeadebad7fe2b4b8e364736f6c63430008150033", + "nonce": "0x153e" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xa4ca388f57b5784b0a8669c41e64ef4e1c5d72e91fd1e65f4eac599e86d60f59", + "transactionType": "CREATE", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0xd84815be6330a61524893920bdff175F63a1104F", + "function": null, + "arguments": [ + "0x9680491850B5162C69786fdE9bd8bcd12d81b351", + "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8" + ], + "transaction": { + "type": "0x00", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "gas": "0x32a99e", + "value": "0x0", + "data": "0x61014034620002a6576001600160401b0362002e71601f38829003908101601f191684019083821185831017620002905780859160409485948552833981010312620002a65782516001600160a01b039384821691829003620002a6576020015190848216808303620002a6578351906200007a82620002ab565b601d825260208201957f456c656b7472696b204c696d6974204f726465722050726f746f636f6c0000008752600260208751620000b781620002ab565b828152019761763160f01b8952600160005560018060a01b031994858354168355600154338782161760015589519b3391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a351902097208760e05261010098818a524660a05260208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f998a84528983015260608201524660808201523060a082015260a0815260c08101928184109084111762000290578288525190206080523060c0526101209687528315801562000287575b620002785750600480548316919091179055600380549091169190911790558151600081526001600160a01b03821660208201527f1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc9162000234917f649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed090604090a18351600081526001600160a01b0390911660208201529081906040820190565b0390a15190612ba99283620002c8843960805183611e28015260a05183611f23015260c05183611df9015260e05183611e7701525182611e9d01525181611e540152f35b63d92e233d60e01b8152600490fd5b50811562000193565b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620002905760405256fe610180604052600436101561001357600080fd5b60003560e01c80630610f4a714611bda57806315169dec14611b9a5780632024cbc114611aa75780633644e51514611a845780633c3efab414611a5d5780635f2a6451146119a257806369328dec146119095780636d70f7ae146118ca5780636fda538f14611788578063715018a61461170c57806379ba5097146116065780638da5cb5b146115df5780638efede3d1461150d57806390d6e14c1461143b578063ab37f486146113fc578063c2ee3a08146113d9578063c415b95c146113b2578063cf0f969d14611386578063e30c39781461135f578063f2fde38b146112dd5763fe61e35c1461010457600080fd5b346104e45760e06003193601126104e45760043567ffffffffffffffff81116104e457610135903690600401611c8a565b610120526101605260243567ffffffffffffffff81116104e45761015d903690600401611c8a565b60e0526101405260443567ffffffffffffffff81116104e457610184903690600401611c8a565b60c0526101005260643567ffffffffffffffff81116104e4576101ab903690600401611c8a565b9060843567ffffffffffffffff81116104e4576101cc903690600401611c25565b9260a43567ffffffffffffffff81116104e4576101ed903690600401611c8a565b92909467ffffffffffffffff60c435116104e4576102103660c435600401611c8a565b93909533600052600760205260ff60406000205416156112ad5760026000541461124f57600260005561012051156112255760e0516101205114801590611217575b801561120b575b6108b65760005b6101205181106108e05750505060148110156104e9575b50505050505060005b610120518110610291576001600055005b6102a2816101205161016051611d5e565b906102b38160e05161014051611d2d565b356102c48260c05161010051611d2d565b356102ce846123ec565b670de0b6b3a7640000946103476102e86101208301611d3d565b6102f460e08401611d3d565b906001600160a01b03604051927fa9059cbb00000000000000000000000000000000000000000000000000000000602085015216602483015288860460448301526044825261034282611f5d565b6128f5565b816000526006602052604060002054956101c0820160146103688285611d9e565b905010156103f8575b5091600196827f2b15903b1f1516345ba547119efb6a90ccb8012f1803cc933c0a28b9291a5fef946001600160a01b036103b061010060c09701611d3d565b1696816001600160a01b036103c86101208601611d3d565b16996080956040519788526020880152046040860152046060840152803582840152013560a0820152a301610280565b966104166104106001600160a01b0395939985611d9e565b90612b11565b91610423819792976127ab565b169061043160a08601611d3d565b95823b156104e457848b97928992868c8b966040519c8d9889987fb6e1471a000000000000000000000000000000000000000000000000000000008a5204920490600488019661048097612774565b03815a6000948591f19283156104d8576001987f2b15903b1f1516345ba547119efb6a90ccb8012f1803cc933c0a28b9291a5fef9560c0956104c9575b50929450925096610371565b6104d290611f49565b386104bd565b6040513d6000823e3d90fd5b600080fd5b6104f291612b11565b90949160805293926105056080516127ab565b8281036108b65760005b81811061083d57506001600160a01b03608051163b156104e45760405160a0527f2499e3a20000000000000000000000000000000000000000000000000000000060a0515260c460a0510160c0600460a051015261012051905260e460a0510160e46101205160051b60a051010190610160519060005b610120518110610695575050506105d46105b860209260031960a051820301602460a051015260e05161014051612849565b60031960a051820301604460a051015260c05161010051612849565b60031960a051820301606460a051015282815201959060005b81811061066d57505050600094610634926106179260031960a051840301608460a0510152612849565b60031960a05182030160a460a051015260a0519360a05193611fc7565b0360a051836001600160a01b03608051165af180156104d85761065d575b388080808080610277565b61066860a051611f49565b610652565b9091966020806001926001600160a01b036106878c611c69565b1681520198019291016105ed565b9091927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c60a051820301835283357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe21610160513603018112156104e457602061083260019382936101605101906108136107f76101e084358452868501358785015260408501356040850152606080860135908501526080808601359085015260a06001600160a01b0361074a828801611c69565b16908501526001600160a01b0361076360c08701611c69565b1660c08501526001600160a01b0361077d60e08701611c69565b1660e08501526101006001600160a01b03610799828801611c69565b16908501526101206001600160a01b036107b4828801611c69565b16908501526101406107c7818701611c7d565b151590850152610160808601359085015261018090806107e9838801886127f9565b929093870152850191611fc7565b6101a0610806818601866127f9565b9185840390860152611fc7565b916108246101c091828101906127f9565b929091818503910152611fc7565b950193019101610586565b806108b0610856610851600194868c611d2d565b611d3d565b610861838888611d2d565b3590604051917fa9059cbb0000000000000000000000000000000000000000000000000000000060208401526001600160a01b0360805116602484015260448301526044825261034282611f5d565b0161050f565b60046040517ffc235960000000000000000000000000000000000000000000000000000000008152fd5b6108f1816101205161016051611d5e565b906109028160e05161014051611d2d565b35916109148260c05161010051611d2d565b3592858310156111dc5761092d8360051b860186611d9e565b90918592819661093c866123ec565b92602087013542116111ab5760608701351590811561119e575b8115611195575b50801561118d575b611163576001600160a01b0361097e6101208801611d3d565b16600052600560205260ff6040600020541615801561113a575b611110576109a96101008701611d3d565b6001600160a01b03806109bf6101208a01611d3d565b169116146110e6576001600160a01b036109db60a08801611d3d565b161580156110c9575b80156110ac575b8015611090575b6110665760c086016001600160a01b03610a0b82611d3d565b1615159081611049575b5061101f57826000526006602052604060002054604087013514610ff557610a406101408701611d51565b15610fb55750670de0b6b3a76400008702878104670de0b6b3a76400001488151715610f5c5784610a70916124db565b670de0b6b3a76400006040870135818102918183041490151715610f5c57610a9d906060880135906124db565b10610f8b578160005260066020526040600020805490670de0b6b3a764000089048201809211610f5c575560808501358015670de0b6b3a76400008904808302839004141715610f5c57610b0290604087013590670de0b6b3a76400008a04026124db565b826000526006602052604086013560406000205411610f3257670de0b6b3a7640000809195049704925b610b6e6020610b3b3689612160565b604051809381927f95de97cc000000000000000000000000000000000000000000000000000000008352600483016122e9565b0381738add30f1fe6535b0b6fcc4a7b495f000e1c4c5d45af49081156104d857600091610ef8575b5015610e9057610bfc916020916001600160a01b03610bb760a08a01611d3d565b16906040518095819482937f1626ba7e000000000000000000000000000000000000000000000000000000008452896004850152604060248501526044840191611fc7565b03915afa9081156104d857600091610e15575b507fffffffff000000000000000000000000000000000000000000000000000000007f1626ba7e00000000000000000000000000000000000000000000000000000000911603610deb575b6101808401610c698186611d9e565b9050610da3575b506101a084016014610c828287611d9e565b90501015610ced575b505060019450610cb590610ca26101008501611d3d565b90610caf60a08601611d3d565b91612886565b80610cc3575b505001610260565b610cd3610100610ce69301611d3d565b906001600160a01b036004541691612886565b3880610cbb565b610d026104106001600160a01b039287611d9e565b929091610d0e816127ab565b1690610d1c60a08801611d3d565b9084600052600660205260406000205494833b156104e457610d7587956000979388946040519e8f998a9889977f1ad047d200000000000000000000000000000000000000000000000000000000895260048901612774565b03925af19081156104d857600195610cb592610d94575b819250610c8b565b610d9d90611f49565b38610d8c565b610db0610db69186611d9e565b90612006565b15610dc15738610c70565b60046040517fb6629c02000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b90506020813d602011610e88575b81610e3060209383611f79565b810103126104e457517fffffffff00000000000000000000000000000000000000000000000000000000811681036104e4577fffffffff00000000000000000000000000000000000000000000000000000000610c0f565b3d9150610e23565b610ea2610eb092610ea892369161210b565b836126ad565b919091612514565b6001600160a01b0380610ec560a08801611d3d565b1691160315610c5a5760046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b90506020813d602011610f2a575b81610f1360209383611f79565b810103126104e457610f2490611fba565b38610b96565b3d9150610f06565b60046040517f17015bc1000000000000000000000000000000000000000000000000000000008152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60046040517fa0de07d3000000000000000000000000000000000000000000000000000000008152fd5b935091955082606085013511610f8b57604084013591670de0b6b3a764000060808601359483600052600660205260408701356040600020550496610b2c565b60046040517fca92fdbb000000000000000000000000000000000000000000000000000000008152fd5b60046040517fd4dfdafe000000000000000000000000000000000000000000000000000000008152fd5b90506001600160a01b0361105d3392611d3d565b16141538610a15565b60046040517fd92e233d000000000000000000000000000000000000000000000000000000008152fd5b506001600160a01b036110a560e08801611d3d565b16156109f2565b506001600160a01b036110c26101008801611d3d565b16156109eb565b506001600160a01b036110df6101208801611d3d565b16156109e4565b60046040517fdd807227000000000000000000000000000000000000000000000000000000008152fd5b60046040517ff84835a0000000000000000000000000000000000000000000000000000000008152fd5b506001600160a01b036111506101008801611d3d565b1660005260ff6040600020541615610998565b60046040517f1f2a2005000000000000000000000000000000000000000000000000000000008152fd5b508015610965565b9050153861095d565b6040880135159150610956565b602484604051907f2e775cae0000000000000000000000000000000000000000000000000000000082526004820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b508160c0511415610259565b5060c05160e0511415610252565b60046040517f521299a9000000000000000000000000000000000000000000000000000000008152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b60246040517fc0ae66ad000000000000000000000000000000000000000000000000000000008152336004820152fd5b346104e45760206003193601126104e4576112f6611c53565b6112fe611cbb565b6001600160a01b0380911690817fffffffffffffffffffffffff00000000000000000000000000000000000000006002541617600255600154167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700600080a3005b346104e45760006003193601126104e45760206001600160a01b0360025416604051908152f35b346104e45760206003193601126104e45760043560005260066020526020604060002054604051908152f35b346104e45760006003193601126104e45760206001600160a01b0360045416604051908152f35b346104e45760006003193601126104e4576020604051670de0b6b3a76400008152f35b346104e45760206003193601126104e4576001600160a01b0361141d611c53565b166000526005602052602060ff604060002054166040519015158152f35b346104e45760206003193601126104e4576004356001600160a01b038082168092036104e457611469611cbb565b811561106657600354908116908282146114e357604080516001600160a01b03938416815292841660208401527fffffffffffffffffffffffff0000000000000000000000000000000000000000927f1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc9190a11617600355005b60046040517fea0f8928000000000000000000000000000000000000000000000000000000008152fd5b346104e45760206003193601126104e457611526611c53565b61152e611cbb565b6001600160a01b0390818116918215611066576004549081168381146115b557604080516001600160a01b0392831681529390911660208401527fffffffffffffffffffffffff0000000000000000000000000000000000000000927f649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed09190a11617600455005b60046040517fa133328a000000000000000000000000000000000000000000000000000000008152fd5b346104e45760006003193601126104e45760206001600160a01b0360015416604051908152f35b346104e45760006003193601126104e4576002546001600160a01b033381831603611688577fffffffffffffffffffffffff00000000000000000000000000000000000000008092166002556001549133908316176001553391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152fd5b346104e45760006003193601126104e457611725611cbb565b60006001600160a01b037fffffffffffffffffffffffff00000000000000000000000000000000000000008060025416600255600154908116600155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346104e45760406003193601126104e45767ffffffffffffffff6004358181116104e4576117ba903690600401611c8a565b916024359081116104e4576117d3903690600401611c8a565b926117dc611cbb565b8015611225578381036108b65760005b8181106117f557005b6001600160a01b03908161180d610851838689611d2d565b1615611066576001917f49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e27441761184a611845848a89611d2d565b611d51565b918061185a61085186898c611d2d565b1660005261189d6020936005855260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b6118ab61085185888b611d2d565b16916118bb611845858b8a611d2d565b6040519015158152a2016117ec565b346104e45760206003193601126104e4576001600160a01b036118eb611c53565b166000526007602052602060ff604060002054166040519015158152f35b346104e45760606003193601126104e457611922611c53565b604435906001600160a01b03908183168093036104e457611941611cbb565b16908115801561199a575b6110665761199891604051917fa9059cbb000000000000000000000000000000000000000000000000000000006020840152602483015260243560448301526044825261034282611f5d565b005b50801561194c565b346104e4576119b036611bf2565b6119bc60a08201611d3d565b6001600160a01b0333911603611a33576119d5816123ec565b8060005260066020526040806000205492013591828114610ff55760407f87b5f0afdc3a118b68246141c5bd338672ab3e901be636e27116238d284de6ac918151908482526020820152a16000526006602052604060002055600080f35b60046040517f4ca88867000000000000000000000000000000000000000000000000000000008152fd5b346104e45760006003193601126104e45760206001600160a01b0360035416604051908152f35b346104e45760006003193601126104e4576020611a9f611def565b604051908152f35b346104e45760406003193601126104e457611ac0611c53565b60243590811515908183036104e4576001600160a01b0390611ae0611cbb565b16918215611066578260005260076020528160ff60406000205416151514611b70577fcba86444cdc912f5fa5f53c20361b3517933eb181876b3f4a0d47478c6a3039b91611b67602092856000526007845260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b604051908152a2005b60046040517f5b2625c0000000000000000000000000000000000000000000000000000000008152fd5b346104e45760206003193601126104e45760043567ffffffffffffffff81116104e457611bd0610db06020923690600401611c25565b6040519015158152f35b346104e4576020611a9f611bed36611bf2565b6123ec565b600319906020828201126104e4576004359167ffffffffffffffff83116104e457826101e0920301126104e45760040190565b9181601f840112156104e45782359167ffffffffffffffff83116104e457602083818601950101116104e457565b600435906001600160a01b03821682036104e457565b35906001600160a01b03821682036104e457565b359081151582036104e457565b9181601f840112156104e45782359167ffffffffffffffff83116104e4576020808501948460051b0101116104e457565b6001600160a01b03600154163303611ccf57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b91908110156111dc5760051b0190565b356001600160a01b03811681036104e45790565b3580151581036104e45790565b91908110156111dc5760051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe21813603018212156104e4570190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156104e4570180359067ffffffffffffffff82116104e4576020019181360383136104e457565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016301480611f20575b15611e4a577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117611ef15760405251902090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b507f00000000000000000000000000000000000000000000000000000000000000004614611e21565b67ffffffffffffffff8111611ef157604052565b6080810190811067ffffffffffffffff821117611ef157604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611ef157604052565b519081151582036104e457565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b9061205e906001600160a01b036003541692604093849283518095819482937f3d303c920000000000000000000000000000000000000000000000000000000084528560048501528760248501526044840191611fc7565b03915afa9081156120c6576000928392612086575b50508161207e575090565b600191501490565b9080939250813d83116120bf575b61209e8183611f79565b810103126120bc575060206120b282611fba565b9101513880612073565b80fd5b503d612094565b82513d6000823e3d90fd5b67ffffffffffffffff8111611ef157601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192612117826120d1565b916121256040519384611f79565b8294818452818301116104e4578281602093846000960137010152565b9080601f830112156104e45781602061215d9335910161210b565b90565b9190916101e09081818503126104e4576040519182019067ffffffffffffffff9183811083821117611ef157604052829481358452602082013560208501526040820135604085015260608201356060850152608082013560808501526121c960a08301611c69565b60a08501526121da60c08301611c69565b60c08501526121eb60e08301611c69565b60e08501526101006121fe818401611c69565b90850152610120612210818401611c69565b90850152610140612222818401611c7d565b908501526101608083013590850152610180808301358481116104e4578261224b918501612142565b908501526101a0808301358481116104e45782612269918501612142565b908501526101c092838301359081116104e4576122869201612142565b910152565b919082519283825260005b8481106122d55750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b602081830181015184830182015201612296565b9061215d916020815281516020820152602082015160408201526040820151606082015260608201516080820152608082015160a082015260a08201516001600160a01b0380911660c08301528060c08401511660e083015260e0830151816101009116818401528301518161012091168184015283015190610140911681830152820151610160901515818301528201516101809081830152820151906101e06123a16101a093828585015261020084019061228b565b928401516123dc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0946101c09286868303018487015261228b565b940151928285030191015261228b565b60206123fc61242f923690612160565b604051809381927fc3c1f2ec000000000000000000000000000000000000000000000000000000008352600483016122e9565b0381738add30f1fe6535b0b6fcc4a7b495f000e1c4c5d45af49081156104d8576000916124aa575b50612460611def565b906040519060208201927f1901000000000000000000000000000000000000000000000000000000000000845260228301526042820152604281526124a481611f5d565b51902090565b906020823d82116124d3575b816124c360209383611f79565b810103126120bc57505138612457565b3d91506124b6565b81156124e5570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600581101561267e57806125255750565b6001810361258b5760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152fd5b600281036125f15760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152fd5b6003146125fa57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9060418151146000146126db576126d7916020820151906060604084015193015160001a906126e5565b9091565b5050600090600290565b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083116127685791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561275b5781516001600160a01b03811615612755579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b926001600160a01b0361215d98969360c0969386521660208501526040840152606083015260808201528160a08201520191611fc7565b6001600160a01b03163081149081156127f0575b506127c657565b60046040517f8a5039c1000000000000000000000000000000000000000000000000000000008152fd5b905015386127bf565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156104e457016020813591019167ffffffffffffffff82116104e45781360383136104e457565b90918281527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83116104e45760209260051b809284830137010190565b91906001600160a01b03604051927f23b872dd00000000000000000000000000000000000000000000000000000000602085015216602483015230604483015260648201526064815260a081019181831067ffffffffffffffff841117611ef1576128f3926040526128f5565b565b6001600160a01b031690604051604081019080821067ffffffffffffffff831117611ef157612986916040526020938482527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564858301526000808587829751910182855af13d15612a3d573d9161296b836120d1565b926129796040519485611f79565b83523d868885013e612a41565b90815180612995575b50505050565b828491810103126120bc5750816129ac9101611fba565b156129b95780808061298f565b608490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b6060915b91929015612abc5750815115612a55575090565b3b15612a5e5790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b825190915015612acf5750805190602001fd5b612b0d906040519182917f08c379a000000000000000000000000000000000000000000000000000000000835260206004840152602483019061228b565b0390fd5b9160148210612b49577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec6014843560601c9401920190565b60046040517fef356d7a000000000000000000000000000000000000000000000000000000008152fdfea264697066735822122036b990b4d257fd6bd088a253c845303610cb8714d9fbcbe06b45ffce6d4443e564736f6c634300081500330000000000000000000000009680491850b5162c69786fde9bd8bcd12d81b3510000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8", + "nonce": "0x153f" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x025ace430ac11e21f1bf3431adacf088157bb0ce4f4efeb8cc06068eb7741a78", + "transactionType": "CALL", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0xd84815be6330a61524893920bdff175F63a1104F", + "function": "manageOperatorPrivilege(address,bool)", + "arguments": [ + "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "true" + ], + "transaction": { + "type": "0x00", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "to": "0xd84815be6330a61524893920bdff175f63a1104f", + "gas": "0x111af", + "value": "0x0", + "data": "0x2024cbc10000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b80000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x1540" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x57392b6664b455d65af13a7c142de28573603083f45443bc4b16620d0997e427", + "transactionType": "CALL", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0xd84815be6330a61524893920bdff175F63a1104F", + "function": "updateTokenWhitelist(address[],bool[])", + "arguments": [ + "[0x057e8e2bC40ECff87e6F9b28750D5E7AC004Eab9, 0x3cf2c147d43C98Fa96d267572e3FD44A4D3940d4, 0x4B6b9B31c72836806B0B1104Cf1CdAB8A0E3BD66, 0x9Ee1Aa18F3FEB435f811d6AE2F71B7D2a4Adce0B, 0x124ABC63F20c6e2088078bd61e2Db100Ff30836e, 0xecf6Bdde77C77863Ae842b145f9ab296E5eAcAF9, 0x8bA5b0452b0a4da211579AA2e105c3da7C0Ad36c, 0x8488c316e23504B8554e4BdE9651802CD45aea24, 0xeDc98fc6240671dF8e7eD035CE39143320c1A174, 0xeEf8e3c318fb3d86489FB258847d028adC629e14]", + "[true, true, true, true, true, true, true, true, true, true]" + ], + "transaction": { + "type": "0x00", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "to": "0xd84815be6330a61524893920bdff175f63a1104f", + "gas": "0x5c4d5", + "value": "0x0", + "data": "0x6fda538f000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000057e8e2bc40ecff87e6f9b28750d5e7ac004eab90000000000000000000000003cf2c147d43c98fa96d267572e3fd44a4d3940d40000000000000000000000004b6b9b31c72836806b0b1104cf1cdab8a0e3bd660000000000000000000000009ee1aa18f3feb435f811d6ae2f71b7d2a4adce0b000000000000000000000000124abc63f20c6e2088078bd61e2db100ff30836e000000000000000000000000ecf6bdde77c77863ae842b145f9ab296e5eacaf90000000000000000000000008ba5b0452b0a4da211579aa2e105c3da7c0ad36c0000000000000000000000008488c316e23504b8554e4bde9651802cd45aea24000000000000000000000000edc98fc6240671df8e7ed035ce39143320c1a174000000000000000000000000eef8e3c318fb3d86489fb258847d028adc629e14000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x1541" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0x3045fb09ab63eeba2d9fe20e2dd85ba41e37cc7c6bed790d7623c1011f041f6a", + "transactionIndex": "0x0", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": null, + "cumulativeGasUsed": "0x44a0a", + "gasUsed": "0x44a0a", + "contractAddress": "0x8adD30F1fE6535B0B6FCc4A7B495f000E1C4C5D4", + "logs": [], + "status": "0x1", + "root": "0x217dea2c51f905de5f26ecc121fe3c7648b606aaef7fc221790d0a7fbcffed17", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0" + }, + { + "transactionHash": "0xb92528aaf622beacc6317348432f6f803a7fde4add084c6c4ee0b4caeba853fd", + "transactionIndex": "0x1", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": null, + "cumulativeGasUsed": "0x48360", + "gasUsed": "0x48360", + "contractAddress": "0x9680491850B5162C69786fdE9bd8bcd12d81b351", + "logs": [], + "status": "0x1", + "root": "0xcf77317e182c2a4cfa7bbfb3eaf4323d0a76898642d6b0a044b9ccf0bdcc81b7", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0" + }, + { + "transactionHash": "0xa4ca388f57b5784b0a8669c41e64ef4e1c5d72e91fd1e65f4eac599e86d60f59", + "transactionIndex": "0x2", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": null, + "cumulativeGasUsed": "0x26fb8d", + "gasUsed": "0x26fb8d", + "contractAddress": "0xd84815be6330a61524893920bdff175F63a1104F", + "logs": [ + { + "address": "0xd84815be6330a61524893920bdff175F63a1104F", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8" + ], + "data": "0x", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "transactionHash": "0xa4ca388f57b5784b0a8669c41e64ef4e1c5d72e91fd1e65f4eac599e86d60f59", + "transactionIndex": "0x2", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xd84815be6330a61524893920bdff175F63a1104F", + "topics": [ + "0x649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed0" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "transactionHash": "0xa4ca388f57b5784b0a8669c41e64ef4e1c5d72e91fd1e65f4eac599e86d60f59", + "transactionIndex": "0x2", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0xd84815be6330a61524893920bdff175F63a1104F", + "topics": [ + "0x1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "transactionHash": "0xa4ca388f57b5784b0a8669c41e64ef4e1c5d72e91fd1e65f4eac599e86d60f59", + "transactionIndex": "0x2", + "logIndex": "0x2", + "removed": false + } + ], + "status": "0x1", + "root": "0xee29c21a2e466aaac3da0bca9337b3b0a42ed5b1fa0f7f7ebda7075d0434600a", + "logsBloom": "0x00020000000000000000000000800000000000000010000000800000080000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000001000000000000000000000000000000000000020000000000000000000800000800000000000000000000000000400000000000000000000000000000000000001000080000000000000000000000000000000000000000000000000000020000000000000000000000080000000000400000000000000000000000000000000000000000000000000000000020000000000000000001000000000000000000000000000000000000000000000000", + "type": "0x0" + }, + { + "transactionHash": "0x025ace430ac11e21f1bf3431adacf088157bb0ce4f4efeb8cc06068eb7741a78", + "transactionIndex": "0x3", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": "0xd84815be6330a61524893920bdff175F63a1104F", + "cumulativeGasUsed": "0xbb23", + "gasUsed": "0xbb23", + "contractAddress": "0x0000000000000000000000000000000000000000", + "logs": [ + { + "address": "0xd84815be6330a61524893920bdff175F63a1104F", + "topics": [ + "0xcba86444cdc912f5fa5f53c20361b3517933eb181876b3f4a0d47478c6a3039b", + "0x0000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "transactionHash": "0x025ace430ac11e21f1bf3431adacf088157bb0ce4f4efeb8cc06068eb7741a78", + "transactionIndex": "0x3", + "logIndex": "0x3", + "removed": false + } + ], + "status": "0x1", + "root": "0x1a761c498f2907d75f2a3a779d3d98a445528fb29c83f40f693a1c4a192884e9", + "logsBloom": "0x00080000000000000000000000800000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000100000000000000020000000000000000000000080000000000400000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000", + "type": "0x0" + }, + { + "transactionHash": "0x57392b6664b455d65af13a7c142de28573603083f45443bc4b16620d0997e427", + "transactionIndex": "0x4", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": "0xd84815be6330a61524893920bdff175F63a1104F", + "cumulativeGasUsed": "0x42d34", + "gasUsed": "0x42d34", + "contractAddress": "0x0000000000000000000000000000000000000000", + "logs": [ + { + "address": "0xd84815be6330a61524893920bdff175F63a1104F", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000057e8e2bc40ecff87e6f9b28750d5e7ac004eab9" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "transactionHash": "0x57392b6664b455d65af13a7c142de28573603083f45443bc4b16620d0997e427", + "transactionIndex": "0x4", + "logIndex": "0x4", + "removed": false + }, + { + "address": "0xd84815be6330a61524893920bdff175F63a1104F", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000003cf2c147d43c98fa96d267572e3fd44a4d3940d4" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "transactionHash": "0x57392b6664b455d65af13a7c142de28573603083f45443bc4b16620d0997e427", + "transactionIndex": "0x4", + "logIndex": "0x5", + "removed": false + }, + { + "address": "0xd84815be6330a61524893920bdff175F63a1104F", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000004b6b9b31c72836806b0b1104cf1cdab8a0e3bd66" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "transactionHash": "0x57392b6664b455d65af13a7c142de28573603083f45443bc4b16620d0997e427", + "transactionIndex": "0x4", + "logIndex": "0x6", + "removed": false + }, + { + "address": "0xd84815be6330a61524893920bdff175F63a1104F", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000009ee1aa18f3feb435f811d6ae2f71b7d2a4adce0b" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "transactionHash": "0x57392b6664b455d65af13a7c142de28573603083f45443bc4b16620d0997e427", + "transactionIndex": "0x4", + "logIndex": "0x7", + "removed": false + }, + { + "address": "0xd84815be6330a61524893920bdff175F63a1104F", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000124abc63f20c6e2088078bd61e2db100ff30836e" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "transactionHash": "0x57392b6664b455d65af13a7c142de28573603083f45443bc4b16620d0997e427", + "transactionIndex": "0x4", + "logIndex": "0x8", + "removed": false + }, + { + "address": "0xd84815be6330a61524893920bdff175F63a1104F", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000ecf6bdde77c77863ae842b145f9ab296e5eacaf9" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "transactionHash": "0x57392b6664b455d65af13a7c142de28573603083f45443bc4b16620d0997e427", + "transactionIndex": "0x4", + "logIndex": "0x9", + "removed": false + }, + { + "address": "0xd84815be6330a61524893920bdff175F63a1104F", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000008ba5b0452b0a4da211579aa2e105c3da7c0ad36c" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "transactionHash": "0x57392b6664b455d65af13a7c142de28573603083f45443bc4b16620d0997e427", + "transactionIndex": "0x4", + "logIndex": "0xa", + "removed": false + }, + { + "address": "0xd84815be6330a61524893920bdff175F63a1104F", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000008488c316e23504b8554e4bde9651802cd45aea24" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "transactionHash": "0x57392b6664b455d65af13a7c142de28573603083f45443bc4b16620d0997e427", + "transactionIndex": "0x4", + "logIndex": "0xb", + "removed": false + }, + { + "address": "0xd84815be6330a61524893920bdff175F63a1104F", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000edc98fc6240671df8e7ed035ce39143320c1a174" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "transactionHash": "0x57392b6664b455d65af13a7c142de28573603083f45443bc4b16620d0997e427", + "transactionIndex": "0x4", + "logIndex": "0xc", + "removed": false + }, + { + "address": "0xd84815be6330a61524893920bdff175F63a1104F", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000eef8e3c318fb3d86489fb258847d028adc629e14" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xf037acacfcf89348136640717820e470eca1ac6d1478eb8b341e3b8610eb10c6", + "blockNumber": "0x3f6935f", + "transactionHash": "0x57392b6664b455d65af13a7c142de28573603083f45443bc4b16620d0997e427", + "transactionIndex": "0x4", + "logIndex": "0xd", + "removed": false + } + ], + "status": "0x1", + "root": "0x211fa834f9195f8187549c38a54e42b0413bbef5bfe3b808e49b85157c6e6f7e", + "logsBloom": "0x00000002100000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000020000000000008000000000000000000000000000000110000000000000000000000000000000000000800000002000020000001000010020000000000000000000000000000000000000200002001000800000000020002000000000000000000000000000000000000040000000000000080000020000000000000020000000000080000000800080000000000008000000000400004040000000001000000000000000800000000800000000000000000000001000000000000000800000000000000002000000000000000", + "type": "0x0" + } + ], + "libraries": [ + "src/libraries/OrderEngine.sol:OrderEngine:0x8add30f1fe6535b0b6fcc4a7b495f000e1c4c5d4" + ], + "pending": [], + "returns": {}, + "timestamp": 1706874048, + "chain": 1891, + "multi": false, + "commit": "2290b4d" +} \ No newline at end of file diff --git a/broadcast/deployOrderEngine.s.sol/1891/run-1710343319.json b/broadcast/deployOrderEngine.s.sol/1891/run-1710343319.json new file mode 100644 index 0000000..eac7b14 --- /dev/null +++ b/broadcast/deployOrderEngine.s.sol/1891/run-1710343319.json @@ -0,0 +1,120 @@ +{ + "transactions": [ + { + "hash": "0x47204932eb7cfa411e90b3f2e9ac0186815b87a053f2f1e71487f71b14bcffab", + "transactionType": "CREATE", + "contractName": "OrderEngine", + "contractAddress": "0xA7FD6EB9cc35c210107d1A918e35ac82BC59961c", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "gas": "0xd7c66", + "data": "0x6080806040523461001a57610b5b9081610020823930815050f35b600080fdfe608060405260048036101561001357600080fd5b60003560e01c90816321cd19a91461069f5781634416e986146104d857816395de97cc146104b7578163b4c07547146100d557508063b91611f41461007c5763c3c1f2ec1461006157600080fd5b602061007461006f3661077e565b610985565b604051908152f35b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d05760206040517fb91209a767a8178c503c992a2db0dd232393048d748c43a04d40fcccacc0df008152f35b600080fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d05780359067ffffffffffffffff82116100d057366023830112156100d05781602461012e93369301359101610895565b60606101c060405161013f8161082d565b60008152600060208201526000604082015260008382015260006080820152600060a0820152600060c0820152600060e0820152600061010082015260006101208201526000610140820152600061016082015282610180820152826101a082015201526101e0818051810103126100d05760208101516040820151916060810151608082015160a08301516101d760c08501610b04565b6101e360e08601610b04565b6101f06101008701610b04565b6101fd6101208801610b04565b9161020b6101408901610b04565b936101608901519586151587036100d0576101808a0151976101a08b0151996101c08c01519b6101e001519c6040519b60208d015260208c5261024d8c610879565b6040519c60208e015260208d526102638d610879565b6040519d60208f01528d6020815261027a90610879565b6040519e8f916102898361082d565b825260208201526040015260608d015260808c015273ffffffffffffffffffffffffffffffffffffffff1660a08b015273ffffffffffffffffffffffffffffffffffffffff1660c08a015273ffffffffffffffffffffffffffffffffffffffff1660e089015273ffffffffffffffffffffffffffffffffffffffff1661010088015273ffffffffffffffffffffffffffffffffffffffff1661012087015215156101408601526101608501526101808401526101a08301526101c082015260405180916020825280516020830152602081015160408301526040810151606083015260608101516080830152608081015160a083015260a081015173ffffffffffffffffffffffffffffffffffffffff1660c083015260c081015173ffffffffffffffffffffffffffffffffffffffff1660e083015260e081015173ffffffffffffffffffffffffffffffffffffffff1661010083015261010081015173ffffffffffffffffffffffffffffffffffffffff1661012083015261012081015173ffffffffffffffffffffffffffffffffffffffff1661014083015261014081015115156101608301526101608101516101808301526101808101516101a083016101e09052610200830161045c916107cf565b906101a08101517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09283858203016101c0860152610499916107cf565b906101c0015191838203016101e08401526104b3916107cf565b0390f35b60206104cd60a06104c73661077e565b01610906565b3b1515604051908152f35b6104e13661077e565b6104ed60a08201610906565b6104f960c08301610906565b61050560e08401610906565b9061016061010094610518868201610906565b9361012090610528828401610906565b9061014091610538838601610927565b9361055161054a610180880188610934565b3691610895565b602081519101209761056a61054a6101a0890189610934565b602081519101209961058361054a6101c08a018a610934565b602081519101209b6040519d8e918a35602084015260208b0135604084015260408b0135606084015260608b0135608084015260808b013560a084015273ffffffffffffffffffffffffffffffffffffffff978880968180941660c08701521660e08501521691015216908b0152169088015215158287015201356101808501526101a08401526101c08301526101e09081830152815261020081019181831067ffffffffffffffff84111761067157507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0090826040526020835261066c6102208201826107cf565b030190f35b6041907f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6040813601126100d057813567ffffffffffffffff918282116100d0576101e09082360301126100d0576106f5908301610985565b60405160208101917f1901000000000000000000000000000000000000000000000000000000000000835260243560228301526042820152604281526080810192818410908411176107505760209350826040525190208152f35b6041847f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc906020828201126100d0576004359167ffffffffffffffff83116100d057826101e0920301126100d05760040190565b919082519283825260005b8481106108195750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b6020818301810151848301820152016107da565b6101e0810190811067ffffffffffffffff82111761084a57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040810190811067ffffffffffffffff82111761084a57604052565b92919267ffffffffffffffff9182811161084a5760405192601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011684019081118482101761084a576040528294818452818301116100d0578281602093846000960137010152565b3573ffffffffffffffffffffffffffffffffffffffff811681036100d05790565b3580151581036100d05790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156100d0570180359067ffffffffffffffff82116100d0576020019181360383136100d057565b61099160a08201610906565b9061099e60c08201610906565b6109aa60e08301610906565b90610160610100936109bd858201610906565b92610120956109cd878401610906565b90610140916109dd838601610927565b92610180946109f161054a87890189610934565b6020815191012098610a0a61054a6101a08a018a610934565b602081519101209a610a2361054a6101c08b018b610934565b602081519101209c6040519e8f927fb91209a767a8178c503c992a2db0dd232393048d748c43a04d40fcccacc0df0060208501528b35604085015260208c0135606085015260408c0135608085015260608c013560a085015260808c013560c085015273ffffffffffffffffffffffffffffffffffffffff988980978180951660e088015216908501521691015216908b0152168489015215159087015201356101a08501526101c08401526101e083015261020090818301528152610220810181811067ffffffffffffffff82111761084a576040526020815191012090565b519073ffffffffffffffffffffffffffffffffffffffff821682036100d05756fea26469706673582212201805f314460b1a5374bb253f72f024bdc8ea21cc2e77073b1164f84307a2015264736f6c63430008150033", + "nonce": "0x20fe" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x0a7cc97780c5f2db2ca4920804f9db50c1c85e841ecf9893669f1679cea3d6df", + "transactionType": "CREATE", + "contractName": "Predicates", + "contractAddress": "0x74ea4485AaC8A7B26BF335BB8Ed2748E9C0EaAfA", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "gas": "0x5dd9f", + "value": "0x0", + "data": "0x6080806040523461001657610464908161001c8239f35b600080fdfe604060808152600436101561001357600080fd5b6000803560e01c80633d303c92146102265780634f38e2b8146101f55780636fe7b0ba146101c457806374261145146101a8578063bf15fcd814610157578063bf797959146100dd578063bfa75143146100b45763ca4ece221461007657600080fd5b346100b15760206100948361008a366102e9565b9093919330610408565b819391936100a7575b5050519015158152f35b109150838061009d565b80fd5b5090346100d9576020906100d06100ca366102e9565b916103a8565b90519015158152f35b5080fd5b5090346100d95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d9576004359167ffffffffffffffff83116100b1575061013c6101356020933690600401610247565b9030610408565b8192919261014e575b50519015158152f35b15915038610145565b50346100b1575061017061016a3661027a565b91610408565b901561017f5760209151908152f35b600482517f1f1b8f61000000000000000000000000000000000000000000000000000000008152fd5b5090346100d9576020906100d06101be366102e9565b9161034f565b50346100b15760206101d98361008a366102e9565b819391936101eb575050519015158152f35b149150838061009d565b50346100b157602061020a8361008a366102e9565b8193919361021c575050519015158152f35b119150838061009d565b50346100b1575061023961016a3661027a565b825191151582526020820152f35b9181601f840112156102755782359167ffffffffffffffff8311610275576020838186019501011161027557565b600080fd5b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126102755760043573ffffffffffffffffffffffffffffffffffffffff8116810361027557916024359067ffffffffffffffff8211610275576102e591600401610247565b9091565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261027557600435916024359067ffffffffffffffff8211610275576102e591600401610247565b90939293848311610275578411610275578101920390565b9290919260005b63ffffffff821690811561039d5761013582610373928888610337565b81610392575b50610388579060201c90610356565b5050915050600190565b600191501438610379565b505050915050600090565b92909192600090815b63ffffffff82169081156103fc57610135826103ce928989610337565b90159081156103f0575b506103e7579060201c906103b1565b50509150915090565b600191501415386103d8565b50505050915050600190565b916000906020928294826040519283375afa60203d1416918261042757565b600051915056fea26469706673582212200458f875fadeeb52c1e054aa965d8292bed98c8059d7cbdeadebad7fe2b4b8e364736f6c63430008150033", + "nonce": "0x20ff" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x7e9f54da0392ef9990cefe21b969c92a5941a40af522abd2208653f7a0054c51", + "transactionType": "CREATE", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "function": null, + "arguments": [ + "0x74ea4485AaC8A7B26BF335BB8Ed2748E9C0EaAfA", + "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8" + ], + "transaction": { + "type": "0x00", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "gas": "0x32cee2", + "value": "0x0", + "data": "0x61014034620002a6576001600160401b0362002e93601f38829003908101601f191684019083821185831017620002905780859160409485948552833981010312620002a65782516001600160a01b039384821691829003620002a6576020015190848216808303620002a6578351906200007a82620002ab565b601d825260208201957f456c656b7472696b204c696d6974204f726465722050726f746f636f6c0000008752600260208751620000b781620002ab565b828152019761763160f01b8952600160005560018060a01b031994858354168355600154338782161760015589519b3391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a351902097208760e05261010098818a524660a05260208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f998a84528983015260608201524660808201523060a082015260a0815260c08101928184109084111762000290578288525190206080523060c0526101209687528315801562000287575b620002785750600480548316919091179055600380549091169190911790558151600081526001600160a01b03821660208201527f1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc9162000234917f649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed090604090a18351600081526001600160a01b0390911660208201529081906040820190565b0390a15190612bcb9283620002c8843960805183611e4a015260a05183611f45015260c05183611e1b015260e05183611e9901525182611ebf01525181611e760152f35b63d92e233d60e01b8152600490fd5b50811562000193565b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620002905760405256fe610180604052600436101561001357600080fd5b60003560e01c80630610f4a714611bfc57806315169dec14611bbc5780632024cbc114611ac95780633644e51514611aa65780633c3efab414611a7f5780635f2a6451146119c457806369328dec1461192b5780636d70f7ae146118ec5780636fda538f146117a5578063715018a61461172957806379ba5097146116235780638da5cb5b146115fc5780638efede3d1461152a57806390d6e14c14611458578063ab37f48614611419578063c2ee3a08146113f6578063c415b95c146113cf578063cf0f969d146113a3578063e30c39781461137c578063f2fde38b146112fa5763fe61e35c1461010457600080fd5b346104cc5760e06003193601126104cc5767ffffffffffffffff6004358181116104cc57610136903690600401611cac565b61016052610100526024358181116104cc57610156903690600401611cac565b60e052610140526044358181116104cc57610175903690600401611cac565b60c052610120526064358181116104cc57610194903690600401611cac565b916084358181116104cc576101ad903690600401611c47565b939060a4358381116104cc576101c7903690600401611cac565b95909360c435116104cc576101e13660c435600401611cac565b93909533600052600760205260ff60406000205416156112ca5760026000541461126c57600260005561016051156112425760e0516101605114801590611234575b8015611228575b6108b85760005b6101605181106108e25750505060148110156104d1575b50505050505060005b610160518110610262576001600055005b610273816101605161010051611d80565b906102848160e05161014051611d4f565b356102958260c05161012051611d4f565b35906102a08461240e565b90670de0b6b3a7640000946103236001600160a01b036102c36101208401611d5f565b166102d060e08401611d5f565b906001600160a01b03604051927fa9059cbb00000000000000000000000000000000000000000000000000000000602085015216602483015288870460448301526044825261031e82611f7f565b612917565b826000526006602052604060002054956101c0820160146103448285611dc0565b905010156103cf575b506001600160a01b037f2b15903b1f1516345ba547119efb6a90ccb8012f1803cc933c0a28b9291a5fef9360019884839461038d61010060c09801611d5f565b998161039c6101208501611d5f565b956080956040519c8d5260208d01520460408b0152046060890152803582890152013560a087015216941692a301610251565b6103df6103e59184959394611dc0565b90612b33565b6103f08394936127cd565b6103fc60a08701611d5f565b936001600160a01b0381163b156104cc578560006001600160a01b038b61045f8f96849886988f8c906040519e8f9c8d9b8c997fb6e1471a000000000000000000000000000000000000000000000000000000008b520493049160048901612796565b0393165af19081156104c0576001987f2b15903b1f1516345ba547119efb6a90ccb8012f1803cc933c0a28b9291a5fef9560c0956001600160a01b039586956104b1575b50945094509850935061034d565b6104ba90611f6b565b386104a3565b6040513d6000823e3d90fd5b600080fd5b6104da91612b33565b90949160805293946104ed6080516127cd565b8281036108b85760005b81811061083557506001600160a01b03608051163b156104cc5760405160a0527f2499e3a20000000000000000000000000000000000000000000000000000000060a0515260c460a0510160c0600460a051015261016051905260e460a0510160e46101605160051b60a05101019061010051906000905b61016051821061068b575050506105bd6105a160209260031960a051820301602460a051015260e0516101405161286b565b60031960a051820301604460a051015260c0516101205161286b565b60031960a051820301606460a05101528281520193906000905b808210610658575050506000949261061f926106029260031960a051840301608460a051015261286b565b60031960a05182030160a460a051015260a0519360a05193611fe9565b0360a051836001600160a01b03608051165af180156104c057610648575b388080808080610248565b61065360a051611f6b565b61063d565b9091948535906001600160a01b03821682036104cc57602080916001600160a01b036001941681520196019201906105d7565b9091927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c60a05182030182527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe2161010051360301843512156104cc5760208061082860019361010051883501906108096107ed6101e084358452868501358785015260408501356040850152606080860135908501526080808601359085015260a06001600160a01b03610740828801611c8b565b16908501526001600160a01b0361075960c08701611c8b565b1660c08501526001600160a01b0361077360e08701611c8b565b1660e08501526101006001600160a01b0361078f828801611c8b565b16908501526101206001600160a01b036107aa828801611c8b565b16908501526101406107bd818701611c9f565b151590850152610160808601359085015261018090806107df8388018861281b565b929093870152850191611fe9565b6101a06107fc8186018661281b565b9185840390860152611fe9565b9161081a6101c0918281019061281b565b929091818503910152611fe9565b950192019201909161056f565b610840818387611d4f565b35906001600160a01b03821682036104cc576108b2600192610863838888611d4f565b3590604051917fa9059cbb0000000000000000000000000000000000000000000000000000000060208401526001600160a01b0360805116602484015260448301526044825261031e82611f7f565b016104f7565b60046040517ffc235960000000000000000000000000000000000000000000000000000000008152fd5b6108f3816101605161010051611d80565b906109048160e05161014051611d4f565b35916109168260c05161012051611d4f565b3592858310156111f95761092f8360051b860186611dc0565b90918592819661093e8661240e565b92602087013542116111c8576060870135159081156111bb575b81156111b2575b5080156111aa575b611180576001600160a01b036109806101208801611d5f565b16600052600560205260ff60406000205416158015611157575b61112d576109ab6101008701611d5f565b6001600160a01b03806109c16101208a01611d5f565b16911614611103576001600160a01b036109dd60a08801611d5f565b161580156110e6575b80156110c9575b80156110ad575b6110835760c086016001600160a01b03610a0d82611d5f565b1615159081611066575b5061103c5782600052600660205260406000205460408701351461101257610a426101408701611d73565b15610fd25750670de0b6b3a76400008702878104670de0b6b3a76400001488151715610f795784610a72916124fd565b670de0b6b3a76400006040870135818102918183041490151715610f7957610a9f906060880135906124fd565b10610fa8578160005260066020526040600020805490670de0b6b3a764000089048201809211610f79575560808501358015670de0b6b3a76400008904808302839004141715610f7957610b0490604087013590670de0b6b3a76400008a04026124fd565b826000526006602052604086013560406000205411610f4f57670de0b6b3a7640000809195049704925b610b706020610b3d3689612182565b604051809381927f95de97cc0000000000000000000000000000000000000000000000000000000083526004830161230b565b038173a7fd6eb9cc35c210107d1a918e35ac82bc59961c5af49081156104c057600091610f15575b5015610ead57610bfe916020916001600160a01b03610bb960a08a01611d5f565b16906040518095819482937f1626ba7e000000000000000000000000000000000000000000000000000000008452896004850152604060248501526044840191611fe9565b03915afa9081156104c057600091610e32575b507fffffffff000000000000000000000000000000000000000000000000000000007f1626ba7e00000000000000000000000000000000000000000000000000000000911603610e08575b6101808401610c6b8186611dc0565b9050610dc0575b506101a084016014610c848287611dc0565b90501015610d01575b505060019450610cc0906001600160a01b03610cac6101008601611d5f565b1690610cba60a08601611d5f565b916128a8565b80610cce575b505001610231565b6001600160a01b03610ce6610100610cfa9401611d5f565b16906001600160a01b0360045416916128a8565b3880610cc6565b6103df610d0e9186611dc0565b909192610d1a846127cd565b610d2660a08801611d5f565b91816000526006602052604060002054936001600160a01b0386163b156104cc5786946040519b8c9687967f1ad047d20000000000000000000000000000000000000000000000000000000088526004880196610d8297612796565b03916001600160a01b031691815a6000948591f19081156104c057600195610cc092610db1575b819250610c8d565b610dba90611f6b565b38610da9565b610dcd610dd39186611dc0565b90612028565b15610dde5738610c72565b60046040517fb6629c02000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b90506020813d602011610ea5575b81610e4d60209383611f9b565b810103126104cc57517fffffffff00000000000000000000000000000000000000000000000000000000811681036104cc577fffffffff00000000000000000000000000000000000000000000000000000000610c11565b3d9150610e40565b610ebf610ecd92610ec592369161212d565b836126cf565b919091612536565b6001600160a01b0380610ee260a08801611d5f565b1691160315610c5c5760046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b90506020813d602011610f47575b81610f3060209383611f9b565b810103126104cc57610f4190611fdc565b38610b98565b3d9150610f23565b60046040517f17015bc1000000000000000000000000000000000000000000000000000000008152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60046040517fa0de07d3000000000000000000000000000000000000000000000000000000008152fd5b935091955082606085013511610fa857604084013591670de0b6b3a764000060808601359483600052600660205260408701356040600020550496610b2e565b60046040517fca92fdbb000000000000000000000000000000000000000000000000000000008152fd5b60046040517fd4dfdafe000000000000000000000000000000000000000000000000000000008152fd5b90506001600160a01b0361107a3392611d5f565b16141538610a17565b60046040517fd92e233d000000000000000000000000000000000000000000000000000000008152fd5b506001600160a01b036110c260e08801611d5f565b16156109f4565b506001600160a01b036110df6101008801611d5f565b16156109ed565b506001600160a01b036110fc6101208801611d5f565b16156109e6565b60046040517fdd807227000000000000000000000000000000000000000000000000000000008152fd5b60046040517ff84835a0000000000000000000000000000000000000000000000000000000008152fd5b506001600160a01b0361116d6101008801611d5f565b1660005260ff604060002054161561099a565b60046040517f1f2a2005000000000000000000000000000000000000000000000000000000008152fd5b508015610967565b9050153861095f565b6040880135159150610958565b602484604051907f2e775cae0000000000000000000000000000000000000000000000000000000082526004820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b508160c051141561022a565b5060c05160e0511415610223565b60046040517f521299a9000000000000000000000000000000000000000000000000000000008152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b60246040517fc0ae66ad000000000000000000000000000000000000000000000000000000008152336004820152fd5b346104cc5760206003193601126104cc57611313611c75565b61131b611cdd565b6001600160a01b0380911690817fffffffffffffffffffffffff00000000000000000000000000000000000000006002541617600255600154167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700600080a3005b346104cc5760006003193601126104cc5760206001600160a01b0360025416604051908152f35b346104cc5760206003193601126104cc5760043560005260066020526020604060002054604051908152f35b346104cc5760006003193601126104cc5760206001600160a01b0360045416604051908152f35b346104cc5760006003193601126104cc576020604051670de0b6b3a76400008152f35b346104cc5760206003193601126104cc576001600160a01b0361143a611c75565b166000526005602052602060ff604060002054166040519015158152f35b346104cc5760206003193601126104cc576004356001600160a01b038082168092036104cc57611486611cdd565b8115611083576003549081169082821461150057604080516001600160a01b03938416815292841660208401527fffffffffffffffffffffffff0000000000000000000000000000000000000000927f1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc9190a11617600355005b60046040517fea0f8928000000000000000000000000000000000000000000000000000000008152fd5b346104cc5760206003193601126104cc57611543611c75565b61154b611cdd565b6001600160a01b0390818116918215611083576004549081168381146115d257604080516001600160a01b0392831681529390911660208401527fffffffffffffffffffffffff0000000000000000000000000000000000000000927f649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed09190a11617600455005b60046040517fa133328a000000000000000000000000000000000000000000000000000000008152fd5b346104cc5760006003193601126104cc5760206001600160a01b0360015416604051908152f35b346104cc5760006003193601126104cc576002546001600160a01b0333818316036116a5577fffffffffffffffffffffffff00000000000000000000000000000000000000008092166002556001549133908316176001553391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152fd5b346104cc5760006003193601126104cc57611742611cdd565b60006001600160a01b037fffffffffffffffffffffffff00000000000000000000000000000000000000008060025416600255600154908116600155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346104cc5760406003193601126104cc5767ffffffffffffffff6004358181116104cc576117d7903690600401611cac565b916024359081116104cc576117f0903690600401611cac565b6117f8611cdd565b8315611242578084036108b85760005b84811061181157005b6001600160a01b03908161182e611829838989611d4f565b611d5f565b1615611083576001917f49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e27441761186b611866848789611d4f565b611d73565b8261187a611829868c8c611d4f565b166000526118bd6020916005835260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b6118cb611829858b8b611d4f565b926118da61186686898b611d4f565b9360405194151585521692a201611808565b346104cc5760206003193601126104cc576001600160a01b0361190d611c75565b166000526007602052602060ff604060002054166040519015158152f35b346104cc5760606003193601126104cc57611944611c75565b604435906001600160a01b03908183168093036104cc57611963611cdd565b1690811580156119bc575b611083576119ba91604051917fa9059cbb000000000000000000000000000000000000000000000000000000006020840152602483015260243560448301526044825261031e82611f7f565b005b50801561196e565b346104cc576119d236611c14565b6119de60a08201611d5f565b6001600160a01b0333911603611a55576119f78161240e565b80600052600660205260408060002054920135918281146110125760407f87b5f0afdc3a118b68246141c5bd338672ab3e901be636e27116238d284de6ac918151908482526020820152a16000526006602052604060002055600080f35b60046040517f4ca88867000000000000000000000000000000000000000000000000000000008152fd5b346104cc5760006003193601126104cc5760206001600160a01b0360035416604051908152f35b346104cc5760006003193601126104cc576020611ac1611e11565b604051908152f35b346104cc5760406003193601126104cc57611ae2611c75565b60243590811515908183036104cc576001600160a01b0390611b02611cdd565b16918215611083578260005260076020528160ff60406000205416151514611b92577fcba86444cdc912f5fa5f53c20361b3517933eb181876b3f4a0d47478c6a3039b91611b89602092856000526007845260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b604051908152a2005b60046040517f5b2625c0000000000000000000000000000000000000000000000000000000008152fd5b346104cc5760206003193601126104cc5760043567ffffffffffffffff81116104cc57611bf2610dcd6020923690600401611c47565b6040519015158152f35b346104cc576020611ac1611c0f36611c14565b61240e565b600319906020828201126104cc576004359167ffffffffffffffff83116104cc57826101e0920301126104cc5760040190565b9181601f840112156104cc5782359167ffffffffffffffff83116104cc57602083818601950101116104cc57565b600435906001600160a01b03821682036104cc57565b35906001600160a01b03821682036104cc57565b359081151582036104cc57565b9181601f840112156104cc5782359167ffffffffffffffff83116104cc576020808501948460051b0101116104cc57565b6001600160a01b03600154163303611cf157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b91908110156111f95760051b0190565b356001600160a01b03811681036104cc5790565b3580151581036104cc5790565b91908110156111f95760051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe21813603018212156104cc570190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156104cc570180359067ffffffffffffffff82116104cc576020019181360383136104cc57565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016301480611f42575b15611e6c577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117611f135760405251902090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b507f00000000000000000000000000000000000000000000000000000000000000004614611e43565b67ffffffffffffffff8111611f1357604052565b6080810190811067ffffffffffffffff821117611f1357604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611f1357604052565b519081151582036104cc57565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b90612080906001600160a01b036003541692604093849283518095819482937f3d303c920000000000000000000000000000000000000000000000000000000084528560048501528760248501526044840191611fe9565b03915afa9081156120e85760009283926120a8575b5050816120a0575090565b600191501490565b9080939250813d83116120e1575b6120c08183611f9b565b810103126120de575060206120d482611fdc565b9101513880612095565b80fd5b503d6120b6565b82513d6000823e3d90fd5b67ffffffffffffffff8111611f1357601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192612139826120f3565b916121476040519384611f9b565b8294818452818301116104cc578281602093846000960137010152565b9080601f830112156104cc5781602061217f9335910161212d565b90565b9190916101e09081818503126104cc576040519182019067ffffffffffffffff9183811083821117611f1357604052829481358452602082013560208501526040820135604085015260608201356060850152608082013560808501526121eb60a08301611c8b565b60a08501526121fc60c08301611c8b565b60c085015261220d60e08301611c8b565b60e0850152610100612220818401611c8b565b90850152610120612232818401611c8b565b90850152610140612244818401611c9f565b908501526101608083013590850152610180808301358481116104cc578261226d918501612164565b908501526101a0808301358481116104cc578261228b918501612164565b908501526101c092838301359081116104cc576122a89201612164565b910152565b919082519283825260005b8481106122f75750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b6020818301810151848301820152016122b8565b9061217f916020815281516020820152602082015160408201526040820151606082015260608201516080820152608082015160a082015260a08201516001600160a01b0380911660c08301528060c08401511660e083015260e0830151816101009116818401528301518161012091168184015283015190610140911681830152820151610160901515818301528201516101809081830152820151906101e06123c36101a09382858501526102008401906122ad565b928401516123fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0946101c0928686830301848701526122ad565b94015192828503019101526122ad565b602061241e612451923690612182565b604051809381927fc3c1f2ec0000000000000000000000000000000000000000000000000000000083526004830161230b565b038173a7fd6eb9cc35c210107d1a918e35ac82bc59961c5af49081156104c0576000916124cc575b50612482611e11565b906040519060208201927f1901000000000000000000000000000000000000000000000000000000000000845260228301526042820152604281526124c681611f7f565b51902090565b906020823d82116124f5575b816124e560209383611f9b565b810103126120de57505138612479565b3d91506124d8565b8115612507570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60058110156126a057806125475750565b600181036125ad5760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152fd5b600281036126135760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152fd5b60031461261c57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9060418151146000146126fd576126f9916020820151906060604084015193015160001a90612707565b9091565b5050600090600290565b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831161278a5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561277d5781516001600160a01b03811615612777579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b926001600160a01b0361217f98969360c0969386521660208501526040840152606083015260808201528160a08201520191611fe9565b6001600160a01b0316308114908115612812575b506127e857565b60046040517f8a5039c1000000000000000000000000000000000000000000000000000000008152fd5b905015386127e1565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156104cc57016020813591019167ffffffffffffffff82116104cc5781360383136104cc57565b90918281527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83116104cc5760209260051b809284830137010190565b91906001600160a01b03604051927f23b872dd00000000000000000000000000000000000000000000000000000000602085015216602483015230604483015260648201526064815260a081019181831067ffffffffffffffff841117611f135761291592604052612917565b565b6001600160a01b031690604051604081019080821067ffffffffffffffff831117611f13576129a8916040526020938482527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564858301526000808587829751910182855af13d15612a5f573d9161298d836120f3565b9261299b6040519485611f9b565b83523d868885013e612a63565b908151806129b7575b50505050565b828491810103126120de5750816129ce9101611fdc565b156129db578080806129b1565b608490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b6060915b91929015612ade5750815115612a77575090565b3b15612a805790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b825190915015612af15750805190602001fd5b612b2f906040519182917f08c379a00000000000000000000000000000000000000000000000000000000083526020600484015260248301906122ad565b0390fd5b9160148210612b6b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec6014843560601c9401920190565b60046040517fef356d7a000000000000000000000000000000000000000000000000000000008152fdfea26469706673582212202359e3ddbb19d82e21a3ac6f2af2942cb384f157a832b656ef265ddfd1e9389064736f6c6343000815003300000000000000000000000074ea4485aac8a7b26bf335bb8ed2748e9c0eaafa0000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8", + "nonce": "0x2100" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x83f6e9a185aeaaa717abe96e5db03da011e80aed3f762a44df785244538ff163", + "transactionType": "CALL", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "function": "manageOperatorPrivilege(address,bool)", + "arguments": [ + "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "true" + ], + "transaction": { + "type": "0x00", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "to": "0xf0ef43a073ee30239a1ecc84e1dadc8895dbc1c2", + "gas": "0x111af", + "value": "0x0", + "data": "0x2024cbc10000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b80000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x2101" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionType": "CALL", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "function": "updateTokenWhitelist(address[],bool[])", + "arguments": [ + "[0x057e8e2bC40ECff87e6F9b28750D5E7AC004Eab9, 0x3cf2c147d43C98Fa96d267572e3FD44A4D3940d4, 0x4B6b9B31c72836806B0B1104Cf1CdAB8A0E3BD66, 0x9Ee1Aa18F3FEB435f811d6AE2F71B7D2a4Adce0B, 0x124ABC63F20c6e2088078bd61e2Db100Ff30836e, 0xecf6Bdde77C77863Ae842b145f9ab296E5eAcAF9, 0x8bA5b0452b0a4da211579AA2e105c3da7C0Ad36c, 0x8488c316e23504B8554e4BdE9651802CD45aea24, 0xeDc98fc6240671dF8e7eD035CE39143320c1A174, 0xeEf8e3c318fb3d86489FB258847d028adC629e14, 0x54390D6FD8C4d4e77c13Ac1E051C9A06eC19112f, 0xA4CBbd0f503720a0cA3C950D647A8c23FBE9702B, 0xab16485D5fC7140b01440C4a1dE5007e9321DB5F, 0x46624eA6a260714df1E1EF4c13575Bc7AAdf0f0e]", + "[true, true, true, true, true, true, true, true, true, true, true, true, true, true]" + ], + "transaction": { + "type": "0x00", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "to": "0xf0ef43a073ee30239a1ecc84e1dadc8895dbc1c2", + "gas": "0x85541", + "value": "0x0", + "data": "0x6fda538f00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000220000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000057e8e2bc40ecff87e6f9b28750d5e7ac004eab90000000000000000000000003cf2c147d43c98fa96d267572e3fd44a4d3940d40000000000000000000000004b6b9b31c72836806b0b1104cf1cdab8a0e3bd660000000000000000000000009ee1aa18f3feb435f811d6ae2f71b7d2a4adce0b000000000000000000000000124abc63f20c6e2088078bd61e2db100ff30836e000000000000000000000000ecf6bdde77c77863ae842b145f9ab296e5eacaf90000000000000000000000008ba5b0452b0a4da211579aa2e105c3da7c0ad36c0000000000000000000000008488c316e23504b8554e4bde9651802cd45aea24000000000000000000000000edc98fc6240671df8e7ed035ce39143320c1a174000000000000000000000000eef8e3c318fb3d86489fb258847d028adc629e1400000000000000000000000054390d6fd8c4d4e77c13ac1e051c9a06ec19112f000000000000000000000000a4cbbd0f503720a0ca3c950d647a8c23fbe9702b000000000000000000000000ab16485d5fc7140b01440c4a1de5007e9321db5f00000000000000000000000046624ea6a260714df1e1ef4c13575bc7aadf0f0e000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x2102" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [ + "src/libraries/OrderEngine.sol:OrderEngine:0xa7fd6eb9cc35c210107d1a918e35ac82bc59961c" + ], + "pending": [ + "0x47204932eb7cfa411e90b3f2e9ac0186815b87a053f2f1e71487f71b14bcffab", + "0x0a7cc97780c5f2db2ca4920804f9db50c1c85e841ecf9893669f1679cea3d6df", + "0x7e9f54da0392ef9990cefe21b969c92a5941a40af522abd2208653f7a0054c51", + "0x83f6e9a185aeaaa717abe96e5db03da011e80aed3f762a44df785244538ff163", + "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232" + ], + "returns": {}, + "timestamp": 1710343319, + "chain": 1891, + "multi": false, + "commit": "fbc8dfb" +} \ No newline at end of file diff --git a/broadcast/deployOrderEngine.s.sol/1891/run-1710343326.json b/broadcast/deployOrderEngine.s.sol/1891/run-1710343326.json new file mode 100644 index 0000000..8ff471f --- /dev/null +++ b/broadcast/deployOrderEngine.s.sol/1891/run-1710343326.json @@ -0,0 +1,449 @@ +{ + "transactions": [ + { + "hash": "0x47204932eb7cfa411e90b3f2e9ac0186815b87a053f2f1e71487f71b14bcffab", + "transactionType": "CREATE", + "contractName": "OrderEngine", + "contractAddress": "0xA7FD6EB9cc35c210107d1A918e35ac82BC59961c", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "gas": "0xd7c66", + "data": "0x6080806040523461001a57610b5b9081610020823930815050f35b600080fdfe608060405260048036101561001357600080fd5b60003560e01c90816321cd19a91461069f5781634416e986146104d857816395de97cc146104b7578163b4c07547146100d557508063b91611f41461007c5763c3c1f2ec1461006157600080fd5b602061007461006f3661077e565b610985565b604051908152f35b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d05760206040517fb91209a767a8178c503c992a2db0dd232393048d748c43a04d40fcccacc0df008152f35b600080fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d05780359067ffffffffffffffff82116100d057366023830112156100d05781602461012e93369301359101610895565b60606101c060405161013f8161082d565b60008152600060208201526000604082015260008382015260006080820152600060a0820152600060c0820152600060e0820152600061010082015260006101208201526000610140820152600061016082015282610180820152826101a082015201526101e0818051810103126100d05760208101516040820151916060810151608082015160a08301516101d760c08501610b04565b6101e360e08601610b04565b6101f06101008701610b04565b6101fd6101208801610b04565b9161020b6101408901610b04565b936101608901519586151587036100d0576101808a0151976101a08b0151996101c08c01519b6101e001519c6040519b60208d015260208c5261024d8c610879565b6040519c60208e015260208d526102638d610879565b6040519d60208f01528d6020815261027a90610879565b6040519e8f916102898361082d565b825260208201526040015260608d015260808c015273ffffffffffffffffffffffffffffffffffffffff1660a08b015273ffffffffffffffffffffffffffffffffffffffff1660c08a015273ffffffffffffffffffffffffffffffffffffffff1660e089015273ffffffffffffffffffffffffffffffffffffffff1661010088015273ffffffffffffffffffffffffffffffffffffffff1661012087015215156101408601526101608501526101808401526101a08301526101c082015260405180916020825280516020830152602081015160408301526040810151606083015260608101516080830152608081015160a083015260a081015173ffffffffffffffffffffffffffffffffffffffff1660c083015260c081015173ffffffffffffffffffffffffffffffffffffffff1660e083015260e081015173ffffffffffffffffffffffffffffffffffffffff1661010083015261010081015173ffffffffffffffffffffffffffffffffffffffff1661012083015261012081015173ffffffffffffffffffffffffffffffffffffffff1661014083015261014081015115156101608301526101608101516101808301526101808101516101a083016101e09052610200830161045c916107cf565b906101a08101517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09283858203016101c0860152610499916107cf565b906101c0015191838203016101e08401526104b3916107cf565b0390f35b60206104cd60a06104c73661077e565b01610906565b3b1515604051908152f35b6104e13661077e565b6104ed60a08201610906565b6104f960c08301610906565b61050560e08401610906565b9061016061010094610518868201610906565b9361012090610528828401610906565b9061014091610538838601610927565b9361055161054a610180880188610934565b3691610895565b602081519101209761056a61054a6101a0890189610934565b602081519101209961058361054a6101c08a018a610934565b602081519101209b6040519d8e918a35602084015260208b0135604084015260408b0135606084015260608b0135608084015260808b013560a084015273ffffffffffffffffffffffffffffffffffffffff978880968180941660c08701521660e08501521691015216908b0152169088015215158287015201356101808501526101a08401526101c08301526101e09081830152815261020081019181831067ffffffffffffffff84111761067157507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0090826040526020835261066c6102208201826107cf565b030190f35b6041907f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6040813601126100d057813567ffffffffffffffff918282116100d0576101e09082360301126100d0576106f5908301610985565b60405160208101917f1901000000000000000000000000000000000000000000000000000000000000835260243560228301526042820152604281526080810192818410908411176107505760209350826040525190208152f35b6041847f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc906020828201126100d0576004359167ffffffffffffffff83116100d057826101e0920301126100d05760040190565b919082519283825260005b8481106108195750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b6020818301810151848301820152016107da565b6101e0810190811067ffffffffffffffff82111761084a57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040810190811067ffffffffffffffff82111761084a57604052565b92919267ffffffffffffffff9182811161084a5760405192601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011684019081118482101761084a576040528294818452818301116100d0578281602093846000960137010152565b3573ffffffffffffffffffffffffffffffffffffffff811681036100d05790565b3580151581036100d05790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156100d0570180359067ffffffffffffffff82116100d0576020019181360383136100d057565b61099160a08201610906565b9061099e60c08201610906565b6109aa60e08301610906565b90610160610100936109bd858201610906565b92610120956109cd878401610906565b90610140916109dd838601610927565b92610180946109f161054a87890189610934565b6020815191012098610a0a61054a6101a08a018a610934565b602081519101209a610a2361054a6101c08b018b610934565b602081519101209c6040519e8f927fb91209a767a8178c503c992a2db0dd232393048d748c43a04d40fcccacc0df0060208501528b35604085015260208c0135606085015260408c0135608085015260608c013560a085015260808c013560c085015273ffffffffffffffffffffffffffffffffffffffff988980978180951660e088015216908501521691015216908b0152168489015215159087015201356101a08501526101c08401526101e083015261020090818301528152610220810181811067ffffffffffffffff82111761084a576040526020815191012090565b519073ffffffffffffffffffffffffffffffffffffffff821682036100d05756fea26469706673582212201805f314460b1a5374bb253f72f024bdc8ea21cc2e77073b1164f84307a2015264736f6c63430008150033", + "nonce": "0x20fe" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x0a7cc97780c5f2db2ca4920804f9db50c1c85e841ecf9893669f1679cea3d6df", + "transactionType": "CREATE", + "contractName": "Predicates", + "contractAddress": "0x74ea4485AaC8A7B26BF335BB8Ed2748E9C0EaAfA", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "gas": "0x5dd9f", + "value": "0x0", + "data": "0x6080806040523461001657610464908161001c8239f35b600080fdfe604060808152600436101561001357600080fd5b6000803560e01c80633d303c92146102265780634f38e2b8146101f55780636fe7b0ba146101c457806374261145146101a8578063bf15fcd814610157578063bf797959146100dd578063bfa75143146100b45763ca4ece221461007657600080fd5b346100b15760206100948361008a366102e9565b9093919330610408565b819391936100a7575b5050519015158152f35b109150838061009d565b80fd5b5090346100d9576020906100d06100ca366102e9565b916103a8565b90519015158152f35b5080fd5b5090346100d95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d9576004359167ffffffffffffffff83116100b1575061013c6101356020933690600401610247565b9030610408565b8192919261014e575b50519015158152f35b15915038610145565b50346100b1575061017061016a3661027a565b91610408565b901561017f5760209151908152f35b600482517f1f1b8f61000000000000000000000000000000000000000000000000000000008152fd5b5090346100d9576020906100d06101be366102e9565b9161034f565b50346100b15760206101d98361008a366102e9565b819391936101eb575050519015158152f35b149150838061009d565b50346100b157602061020a8361008a366102e9565b8193919361021c575050519015158152f35b119150838061009d565b50346100b1575061023961016a3661027a565b825191151582526020820152f35b9181601f840112156102755782359167ffffffffffffffff8311610275576020838186019501011161027557565b600080fd5b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126102755760043573ffffffffffffffffffffffffffffffffffffffff8116810361027557916024359067ffffffffffffffff8211610275576102e591600401610247565b9091565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261027557600435916024359067ffffffffffffffff8211610275576102e591600401610247565b90939293848311610275578411610275578101920390565b9290919260005b63ffffffff821690811561039d5761013582610373928888610337565b81610392575b50610388579060201c90610356565b5050915050600190565b600191501438610379565b505050915050600090565b92909192600090815b63ffffffff82169081156103fc57610135826103ce928989610337565b90159081156103f0575b506103e7579060201c906103b1565b50509150915090565b600191501415386103d8565b50505050915050600190565b916000906020928294826040519283375afa60203d1416918261042757565b600051915056fea26469706673582212200458f875fadeeb52c1e054aa965d8292bed98c8059d7cbdeadebad7fe2b4b8e364736f6c63430008150033", + "nonce": "0x20ff" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x7e9f54da0392ef9990cefe21b969c92a5941a40af522abd2208653f7a0054c51", + "transactionType": "CREATE", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "function": null, + "arguments": [ + "0x74ea4485AaC8A7B26BF335BB8Ed2748E9C0EaAfA", + "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8" + ], + "transaction": { + "type": "0x00", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "gas": "0x32cee2", + "value": "0x0", + "data": "0x61014034620002a6576001600160401b0362002e93601f38829003908101601f191684019083821185831017620002905780859160409485948552833981010312620002a65782516001600160a01b039384821691829003620002a6576020015190848216808303620002a6578351906200007a82620002ab565b601d825260208201957f456c656b7472696b204c696d6974204f726465722050726f746f636f6c0000008752600260208751620000b781620002ab565b828152019761763160f01b8952600160005560018060a01b031994858354168355600154338782161760015589519b3391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a351902097208760e05261010098818a524660a05260208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f998a84528983015260608201524660808201523060a082015260a0815260c08101928184109084111762000290578288525190206080523060c0526101209687528315801562000287575b620002785750600480548316919091179055600380549091169190911790558151600081526001600160a01b03821660208201527f1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc9162000234917f649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed090604090a18351600081526001600160a01b0390911660208201529081906040820190565b0390a15190612bcb9283620002c8843960805183611e4a015260a05183611f45015260c05183611e1b015260e05183611e9901525182611ebf01525181611e760152f35b63d92e233d60e01b8152600490fd5b50811562000193565b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620002905760405256fe610180604052600436101561001357600080fd5b60003560e01c80630610f4a714611bfc57806315169dec14611bbc5780632024cbc114611ac95780633644e51514611aa65780633c3efab414611a7f5780635f2a6451146119c457806369328dec1461192b5780636d70f7ae146118ec5780636fda538f146117a5578063715018a61461172957806379ba5097146116235780638da5cb5b146115fc5780638efede3d1461152a57806390d6e14c14611458578063ab37f48614611419578063c2ee3a08146113f6578063c415b95c146113cf578063cf0f969d146113a3578063e30c39781461137c578063f2fde38b146112fa5763fe61e35c1461010457600080fd5b346104cc5760e06003193601126104cc5767ffffffffffffffff6004358181116104cc57610136903690600401611cac565b61016052610100526024358181116104cc57610156903690600401611cac565b60e052610140526044358181116104cc57610175903690600401611cac565b60c052610120526064358181116104cc57610194903690600401611cac565b916084358181116104cc576101ad903690600401611c47565b939060a4358381116104cc576101c7903690600401611cac565b95909360c435116104cc576101e13660c435600401611cac565b93909533600052600760205260ff60406000205416156112ca5760026000541461126c57600260005561016051156112425760e0516101605114801590611234575b8015611228575b6108b85760005b6101605181106108e25750505060148110156104d1575b50505050505060005b610160518110610262576001600055005b610273816101605161010051611d80565b906102848160e05161014051611d4f565b356102958260c05161012051611d4f565b35906102a08461240e565b90670de0b6b3a7640000946103236001600160a01b036102c36101208401611d5f565b166102d060e08401611d5f565b906001600160a01b03604051927fa9059cbb00000000000000000000000000000000000000000000000000000000602085015216602483015288870460448301526044825261031e82611f7f565b612917565b826000526006602052604060002054956101c0820160146103448285611dc0565b905010156103cf575b506001600160a01b037f2b15903b1f1516345ba547119efb6a90ccb8012f1803cc933c0a28b9291a5fef9360019884839461038d61010060c09801611d5f565b998161039c6101208501611d5f565b956080956040519c8d5260208d01520460408b0152046060890152803582890152013560a087015216941692a301610251565b6103df6103e59184959394611dc0565b90612b33565b6103f08394936127cd565b6103fc60a08701611d5f565b936001600160a01b0381163b156104cc578560006001600160a01b038b61045f8f96849886988f8c906040519e8f9c8d9b8c997fb6e1471a000000000000000000000000000000000000000000000000000000008b520493049160048901612796565b0393165af19081156104c0576001987f2b15903b1f1516345ba547119efb6a90ccb8012f1803cc933c0a28b9291a5fef9560c0956001600160a01b039586956104b1575b50945094509850935061034d565b6104ba90611f6b565b386104a3565b6040513d6000823e3d90fd5b600080fd5b6104da91612b33565b90949160805293946104ed6080516127cd565b8281036108b85760005b81811061083557506001600160a01b03608051163b156104cc5760405160a0527f2499e3a20000000000000000000000000000000000000000000000000000000060a0515260c460a0510160c0600460a051015261016051905260e460a0510160e46101605160051b60a05101019061010051906000905b61016051821061068b575050506105bd6105a160209260031960a051820301602460a051015260e0516101405161286b565b60031960a051820301604460a051015260c0516101205161286b565b60031960a051820301606460a05101528281520193906000905b808210610658575050506000949261061f926106029260031960a051840301608460a051015261286b565b60031960a05182030160a460a051015260a0519360a05193611fe9565b0360a051836001600160a01b03608051165af180156104c057610648575b388080808080610248565b61065360a051611f6b565b61063d565b9091948535906001600160a01b03821682036104cc57602080916001600160a01b036001941681520196019201906105d7565b9091927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c60a05182030182527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe2161010051360301843512156104cc5760208061082860019361010051883501906108096107ed6101e084358452868501358785015260408501356040850152606080860135908501526080808601359085015260a06001600160a01b03610740828801611c8b565b16908501526001600160a01b0361075960c08701611c8b565b1660c08501526001600160a01b0361077360e08701611c8b565b1660e08501526101006001600160a01b0361078f828801611c8b565b16908501526101206001600160a01b036107aa828801611c8b565b16908501526101406107bd818701611c9f565b151590850152610160808601359085015261018090806107df8388018861281b565b929093870152850191611fe9565b6101a06107fc8186018661281b565b9185840390860152611fe9565b9161081a6101c0918281019061281b565b929091818503910152611fe9565b950192019201909161056f565b610840818387611d4f565b35906001600160a01b03821682036104cc576108b2600192610863838888611d4f565b3590604051917fa9059cbb0000000000000000000000000000000000000000000000000000000060208401526001600160a01b0360805116602484015260448301526044825261031e82611f7f565b016104f7565b60046040517ffc235960000000000000000000000000000000000000000000000000000000008152fd5b6108f3816101605161010051611d80565b906109048160e05161014051611d4f565b35916109168260c05161012051611d4f565b3592858310156111f95761092f8360051b860186611dc0565b90918592819661093e8661240e565b92602087013542116111c8576060870135159081156111bb575b81156111b2575b5080156111aa575b611180576001600160a01b036109806101208801611d5f565b16600052600560205260ff60406000205416158015611157575b61112d576109ab6101008701611d5f565b6001600160a01b03806109c16101208a01611d5f565b16911614611103576001600160a01b036109dd60a08801611d5f565b161580156110e6575b80156110c9575b80156110ad575b6110835760c086016001600160a01b03610a0d82611d5f565b1615159081611066575b5061103c5782600052600660205260406000205460408701351461101257610a426101408701611d73565b15610fd25750670de0b6b3a76400008702878104670de0b6b3a76400001488151715610f795784610a72916124fd565b670de0b6b3a76400006040870135818102918183041490151715610f7957610a9f906060880135906124fd565b10610fa8578160005260066020526040600020805490670de0b6b3a764000089048201809211610f79575560808501358015670de0b6b3a76400008904808302839004141715610f7957610b0490604087013590670de0b6b3a76400008a04026124fd565b826000526006602052604086013560406000205411610f4f57670de0b6b3a7640000809195049704925b610b706020610b3d3689612182565b604051809381927f95de97cc0000000000000000000000000000000000000000000000000000000083526004830161230b565b038173a7fd6eb9cc35c210107d1a918e35ac82bc59961c5af49081156104c057600091610f15575b5015610ead57610bfe916020916001600160a01b03610bb960a08a01611d5f565b16906040518095819482937f1626ba7e000000000000000000000000000000000000000000000000000000008452896004850152604060248501526044840191611fe9565b03915afa9081156104c057600091610e32575b507fffffffff000000000000000000000000000000000000000000000000000000007f1626ba7e00000000000000000000000000000000000000000000000000000000911603610e08575b6101808401610c6b8186611dc0565b9050610dc0575b506101a084016014610c848287611dc0565b90501015610d01575b505060019450610cc0906001600160a01b03610cac6101008601611d5f565b1690610cba60a08601611d5f565b916128a8565b80610cce575b505001610231565b6001600160a01b03610ce6610100610cfa9401611d5f565b16906001600160a01b0360045416916128a8565b3880610cc6565b6103df610d0e9186611dc0565b909192610d1a846127cd565b610d2660a08801611d5f565b91816000526006602052604060002054936001600160a01b0386163b156104cc5786946040519b8c9687967f1ad047d20000000000000000000000000000000000000000000000000000000088526004880196610d8297612796565b03916001600160a01b031691815a6000948591f19081156104c057600195610cc092610db1575b819250610c8d565b610dba90611f6b565b38610da9565b610dcd610dd39186611dc0565b90612028565b15610dde5738610c72565b60046040517fb6629c02000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b90506020813d602011610ea5575b81610e4d60209383611f9b565b810103126104cc57517fffffffff00000000000000000000000000000000000000000000000000000000811681036104cc577fffffffff00000000000000000000000000000000000000000000000000000000610c11565b3d9150610e40565b610ebf610ecd92610ec592369161212d565b836126cf565b919091612536565b6001600160a01b0380610ee260a08801611d5f565b1691160315610c5c5760046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b90506020813d602011610f47575b81610f3060209383611f9b565b810103126104cc57610f4190611fdc565b38610b98565b3d9150610f23565b60046040517f17015bc1000000000000000000000000000000000000000000000000000000008152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60046040517fa0de07d3000000000000000000000000000000000000000000000000000000008152fd5b935091955082606085013511610fa857604084013591670de0b6b3a764000060808601359483600052600660205260408701356040600020550496610b2e565b60046040517fca92fdbb000000000000000000000000000000000000000000000000000000008152fd5b60046040517fd4dfdafe000000000000000000000000000000000000000000000000000000008152fd5b90506001600160a01b0361107a3392611d5f565b16141538610a17565b60046040517fd92e233d000000000000000000000000000000000000000000000000000000008152fd5b506001600160a01b036110c260e08801611d5f565b16156109f4565b506001600160a01b036110df6101008801611d5f565b16156109ed565b506001600160a01b036110fc6101208801611d5f565b16156109e6565b60046040517fdd807227000000000000000000000000000000000000000000000000000000008152fd5b60046040517ff84835a0000000000000000000000000000000000000000000000000000000008152fd5b506001600160a01b0361116d6101008801611d5f565b1660005260ff604060002054161561099a565b60046040517f1f2a2005000000000000000000000000000000000000000000000000000000008152fd5b508015610967565b9050153861095f565b6040880135159150610958565b602484604051907f2e775cae0000000000000000000000000000000000000000000000000000000082526004820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b508160c051141561022a565b5060c05160e0511415610223565b60046040517f521299a9000000000000000000000000000000000000000000000000000000008152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b60246040517fc0ae66ad000000000000000000000000000000000000000000000000000000008152336004820152fd5b346104cc5760206003193601126104cc57611313611c75565b61131b611cdd565b6001600160a01b0380911690817fffffffffffffffffffffffff00000000000000000000000000000000000000006002541617600255600154167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700600080a3005b346104cc5760006003193601126104cc5760206001600160a01b0360025416604051908152f35b346104cc5760206003193601126104cc5760043560005260066020526020604060002054604051908152f35b346104cc5760006003193601126104cc5760206001600160a01b0360045416604051908152f35b346104cc5760006003193601126104cc576020604051670de0b6b3a76400008152f35b346104cc5760206003193601126104cc576001600160a01b0361143a611c75565b166000526005602052602060ff604060002054166040519015158152f35b346104cc5760206003193601126104cc576004356001600160a01b038082168092036104cc57611486611cdd565b8115611083576003549081169082821461150057604080516001600160a01b03938416815292841660208401527fffffffffffffffffffffffff0000000000000000000000000000000000000000927f1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc9190a11617600355005b60046040517fea0f8928000000000000000000000000000000000000000000000000000000008152fd5b346104cc5760206003193601126104cc57611543611c75565b61154b611cdd565b6001600160a01b0390818116918215611083576004549081168381146115d257604080516001600160a01b0392831681529390911660208401527fffffffffffffffffffffffff0000000000000000000000000000000000000000927f649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed09190a11617600455005b60046040517fa133328a000000000000000000000000000000000000000000000000000000008152fd5b346104cc5760006003193601126104cc5760206001600160a01b0360015416604051908152f35b346104cc5760006003193601126104cc576002546001600160a01b0333818316036116a5577fffffffffffffffffffffffff00000000000000000000000000000000000000008092166002556001549133908316176001553391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152fd5b346104cc5760006003193601126104cc57611742611cdd565b60006001600160a01b037fffffffffffffffffffffffff00000000000000000000000000000000000000008060025416600255600154908116600155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346104cc5760406003193601126104cc5767ffffffffffffffff6004358181116104cc576117d7903690600401611cac565b916024359081116104cc576117f0903690600401611cac565b6117f8611cdd565b8315611242578084036108b85760005b84811061181157005b6001600160a01b03908161182e611829838989611d4f565b611d5f565b1615611083576001917f49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e27441761186b611866848789611d4f565b611d73565b8261187a611829868c8c611d4f565b166000526118bd6020916005835260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b6118cb611829858b8b611d4f565b926118da61186686898b611d4f565b9360405194151585521692a201611808565b346104cc5760206003193601126104cc576001600160a01b0361190d611c75565b166000526007602052602060ff604060002054166040519015158152f35b346104cc5760606003193601126104cc57611944611c75565b604435906001600160a01b03908183168093036104cc57611963611cdd565b1690811580156119bc575b611083576119ba91604051917fa9059cbb000000000000000000000000000000000000000000000000000000006020840152602483015260243560448301526044825261031e82611f7f565b005b50801561196e565b346104cc576119d236611c14565b6119de60a08201611d5f565b6001600160a01b0333911603611a55576119f78161240e565b80600052600660205260408060002054920135918281146110125760407f87b5f0afdc3a118b68246141c5bd338672ab3e901be636e27116238d284de6ac918151908482526020820152a16000526006602052604060002055600080f35b60046040517f4ca88867000000000000000000000000000000000000000000000000000000008152fd5b346104cc5760006003193601126104cc5760206001600160a01b0360035416604051908152f35b346104cc5760006003193601126104cc576020611ac1611e11565b604051908152f35b346104cc5760406003193601126104cc57611ae2611c75565b60243590811515908183036104cc576001600160a01b0390611b02611cdd565b16918215611083578260005260076020528160ff60406000205416151514611b92577fcba86444cdc912f5fa5f53c20361b3517933eb181876b3f4a0d47478c6a3039b91611b89602092856000526007845260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b604051908152a2005b60046040517f5b2625c0000000000000000000000000000000000000000000000000000000008152fd5b346104cc5760206003193601126104cc5760043567ffffffffffffffff81116104cc57611bf2610dcd6020923690600401611c47565b6040519015158152f35b346104cc576020611ac1611c0f36611c14565b61240e565b600319906020828201126104cc576004359167ffffffffffffffff83116104cc57826101e0920301126104cc5760040190565b9181601f840112156104cc5782359167ffffffffffffffff83116104cc57602083818601950101116104cc57565b600435906001600160a01b03821682036104cc57565b35906001600160a01b03821682036104cc57565b359081151582036104cc57565b9181601f840112156104cc5782359167ffffffffffffffff83116104cc576020808501948460051b0101116104cc57565b6001600160a01b03600154163303611cf157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b91908110156111f95760051b0190565b356001600160a01b03811681036104cc5790565b3580151581036104cc5790565b91908110156111f95760051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe21813603018212156104cc570190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156104cc570180359067ffffffffffffffff82116104cc576020019181360383136104cc57565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016301480611f42575b15611e6c577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117611f135760405251902090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b507f00000000000000000000000000000000000000000000000000000000000000004614611e43565b67ffffffffffffffff8111611f1357604052565b6080810190811067ffffffffffffffff821117611f1357604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611f1357604052565b519081151582036104cc57565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b90612080906001600160a01b036003541692604093849283518095819482937f3d303c920000000000000000000000000000000000000000000000000000000084528560048501528760248501526044840191611fe9565b03915afa9081156120e85760009283926120a8575b5050816120a0575090565b600191501490565b9080939250813d83116120e1575b6120c08183611f9b565b810103126120de575060206120d482611fdc565b9101513880612095565b80fd5b503d6120b6565b82513d6000823e3d90fd5b67ffffffffffffffff8111611f1357601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192612139826120f3565b916121476040519384611f9b565b8294818452818301116104cc578281602093846000960137010152565b9080601f830112156104cc5781602061217f9335910161212d565b90565b9190916101e09081818503126104cc576040519182019067ffffffffffffffff9183811083821117611f1357604052829481358452602082013560208501526040820135604085015260608201356060850152608082013560808501526121eb60a08301611c8b565b60a08501526121fc60c08301611c8b565b60c085015261220d60e08301611c8b565b60e0850152610100612220818401611c8b565b90850152610120612232818401611c8b565b90850152610140612244818401611c9f565b908501526101608083013590850152610180808301358481116104cc578261226d918501612164565b908501526101a0808301358481116104cc578261228b918501612164565b908501526101c092838301359081116104cc576122a89201612164565b910152565b919082519283825260005b8481106122f75750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b6020818301810151848301820152016122b8565b9061217f916020815281516020820152602082015160408201526040820151606082015260608201516080820152608082015160a082015260a08201516001600160a01b0380911660c08301528060c08401511660e083015260e0830151816101009116818401528301518161012091168184015283015190610140911681830152820151610160901515818301528201516101809081830152820151906101e06123c36101a09382858501526102008401906122ad565b928401516123fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0946101c0928686830301848701526122ad565b94015192828503019101526122ad565b602061241e612451923690612182565b604051809381927fc3c1f2ec0000000000000000000000000000000000000000000000000000000083526004830161230b565b038173a7fd6eb9cc35c210107d1a918e35ac82bc59961c5af49081156104c0576000916124cc575b50612482611e11565b906040519060208201927f1901000000000000000000000000000000000000000000000000000000000000845260228301526042820152604281526124c681611f7f565b51902090565b906020823d82116124f5575b816124e560209383611f9b565b810103126120de57505138612479565b3d91506124d8565b8115612507570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60058110156126a057806125475750565b600181036125ad5760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152fd5b600281036126135760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152fd5b60031461261c57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9060418151146000146126fd576126f9916020820151906060604084015193015160001a90612707565b9091565b5050600090600290565b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831161278a5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561277d5781516001600160a01b03811615612777579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b926001600160a01b0361217f98969360c0969386521660208501526040840152606083015260808201528160a08201520191611fe9565b6001600160a01b0316308114908115612812575b506127e857565b60046040517f8a5039c1000000000000000000000000000000000000000000000000000000008152fd5b905015386127e1565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156104cc57016020813591019167ffffffffffffffff82116104cc5781360383136104cc57565b90918281527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83116104cc5760209260051b809284830137010190565b91906001600160a01b03604051927f23b872dd00000000000000000000000000000000000000000000000000000000602085015216602483015230604483015260648201526064815260a081019181831067ffffffffffffffff841117611f135761291592604052612917565b565b6001600160a01b031690604051604081019080821067ffffffffffffffff831117611f13576129a8916040526020938482527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564858301526000808587829751910182855af13d15612a5f573d9161298d836120f3565b9261299b6040519485611f9b565b83523d868885013e612a63565b908151806129b7575b50505050565b828491810103126120de5750816129ce9101611fdc565b156129db578080806129b1565b608490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b6060915b91929015612ade5750815115612a77575090565b3b15612a805790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b825190915015612af15750805190602001fd5b612b2f906040519182917f08c379a00000000000000000000000000000000000000000000000000000000083526020600484015260248301906122ad565b0390fd5b9160148210612b6b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec6014843560601c9401920190565b60046040517fef356d7a000000000000000000000000000000000000000000000000000000008152fdfea26469706673582212202359e3ddbb19d82e21a3ac6f2af2942cb384f157a832b656ef265ddfd1e9389064736f6c6343000815003300000000000000000000000074ea4485aac8a7b26bf335bb8ed2748e9c0eaafa0000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8", + "nonce": "0x2100" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x83f6e9a185aeaaa717abe96e5db03da011e80aed3f762a44df785244538ff163", + "transactionType": "CALL", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "function": "manageOperatorPrivilege(address,bool)", + "arguments": [ + "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "true" + ], + "transaction": { + "type": "0x00", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "to": "0xf0ef43a073ee30239a1ecc84e1dadc8895dbc1c2", + "gas": "0x111af", + "value": "0x0", + "data": "0x2024cbc10000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b80000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x2101" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionType": "CALL", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "function": "updateTokenWhitelist(address[],bool[])", + "arguments": [ + "[0x057e8e2bC40ECff87e6F9b28750D5E7AC004Eab9, 0x3cf2c147d43C98Fa96d267572e3FD44A4D3940d4, 0x4B6b9B31c72836806B0B1104Cf1CdAB8A0E3BD66, 0x9Ee1Aa18F3FEB435f811d6AE2F71B7D2a4Adce0B, 0x124ABC63F20c6e2088078bd61e2Db100Ff30836e, 0xecf6Bdde77C77863Ae842b145f9ab296E5eAcAF9, 0x8bA5b0452b0a4da211579AA2e105c3da7C0Ad36c, 0x8488c316e23504B8554e4BdE9651802CD45aea24, 0xeDc98fc6240671dF8e7eD035CE39143320c1A174, 0xeEf8e3c318fb3d86489FB258847d028adC629e14, 0x54390D6FD8C4d4e77c13Ac1E051C9A06eC19112f, 0xA4CBbd0f503720a0cA3C950D647A8c23FBE9702B, 0xab16485D5fC7140b01440C4a1dE5007e9321DB5F, 0x46624eA6a260714df1E1EF4c13575Bc7AAdf0f0e]", + "[true, true, true, true, true, true, true, true, true, true, true, true, true, true]" + ], + "transaction": { + "type": "0x00", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "to": "0xf0ef43a073ee30239a1ecc84e1dadc8895dbc1c2", + "gas": "0x85541", + "value": "0x0", + "data": "0x6fda538f00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000220000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000057e8e2bc40ecff87e6f9b28750d5e7ac004eab90000000000000000000000003cf2c147d43c98fa96d267572e3fd44a4d3940d40000000000000000000000004b6b9b31c72836806b0b1104cf1cdab8a0e3bd660000000000000000000000009ee1aa18f3feb435f811d6ae2f71b7d2a4adce0b000000000000000000000000124abc63f20c6e2088078bd61e2db100ff30836e000000000000000000000000ecf6bdde77c77863ae842b145f9ab296e5eacaf90000000000000000000000008ba5b0452b0a4da211579aa2e105c3da7c0ad36c0000000000000000000000008488c316e23504b8554e4bde9651802cd45aea24000000000000000000000000edc98fc6240671df8e7ed035ce39143320c1a174000000000000000000000000eef8e3c318fb3d86489fb258847d028adc629e1400000000000000000000000054390d6fd8c4d4e77c13ac1e051c9a06ec19112f000000000000000000000000a4cbbd0f503720a0ca3c950d647a8c23fbe9702b000000000000000000000000ab16485d5fc7140b01440c4a1de5007e9321db5f00000000000000000000000046624ea6a260714df1e1ef4c13575bc7aadf0f0e000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x2102" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0x47204932eb7cfa411e90b3f2e9ac0186815b87a053f2f1e71487f71b14bcffab", + "transactionIndex": "0x0", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": null, + "cumulativeGasUsed": "0xa6069", + "gasUsed": "0xa6069", + "contractAddress": "0xA7FD6EB9cc35c210107d1A918e35ac82BC59961c", + "logs": [], + "status": "0x1", + "root": "0x7b2d1e6d6956afc3352a3cf385d0a5ccc29033b5a67753aae694bcce792fbf25", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0" + }, + { + "transactionHash": "0x0a7cc97780c5f2db2ca4920804f9db50c1c85e841ecf9893669f1679cea3d6df", + "transactionIndex": "0x1", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": null, + "cumulativeGasUsed": "0x48360", + "gasUsed": "0x48360", + "contractAddress": "0x74ea4485AaC8A7B26BF335BB8Ed2748E9C0EaAfA", + "logs": [], + "status": "0x1", + "root": "0x4b55fbe494e060b272557e969ccaca8bd4f388c8db16ff3ba685d8c919c21af1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0" + }, + { + "transactionHash": "0x7e9f54da0392ef9990cefe21b969c92a5941a40af522abd2208653f7a0054c51", + "transactionIndex": "0x2", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": null, + "cumulativeGasUsed": "0x27183a", + "gasUsed": "0x27183a", + "contractAddress": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "logs": [ + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8" + ], + "data": "0x", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0x7e9f54da0392ef9990cefe21b969c92a5941a40af522abd2208653f7a0054c51", + "transactionIndex": "0x2", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed0" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0x7e9f54da0392ef9990cefe21b969c92a5941a40af522abd2208653f7a0054c51", + "transactionIndex": "0x2", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0x7e9f54da0392ef9990cefe21b969c92a5941a40af522abd2208653f7a0054c51", + "transactionIndex": "0x2", + "logIndex": "0x2", + "removed": false + } + ], + "status": "0x1", + "root": "0xbec266d3d1354fc5fa1952f26471c1644bd2b945bbdda31708f7ddf9f0655872", + "logsBloom": "0x00020000000000000000000000800000000000000010000000800000080000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000001000000000000000000000000000000000000020000000000000004000800000800000000000000000000000000400000000000000000000000000000000000001000080000000000000000000000000000000000000000000000000000000000002000000000000000000000400000400000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0" + }, + { + "transactionHash": "0x83f6e9a185aeaaa717abe96e5db03da011e80aed3f762a44df785244538ff163", + "transactionIndex": "0x3", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "cumulativeGasUsed": "0xbb23", + "gasUsed": "0xbb23", + "contractAddress": "0x0000000000000000000000000000000000000000", + "logs": [ + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0xcba86444cdc912f5fa5f53c20361b3517933eb181876b3f4a0d47478c6a3039b", + "0x0000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0x83f6e9a185aeaaa717abe96e5db03da011e80aed3f762a44df785244538ff163", + "transactionIndex": "0x3", + "logIndex": "0x3", + "removed": false + } + ], + "status": "0x1", + "root": "0x86db390e70e6496624f67ea3219f32e202ae18d0439cb94db008769f17bd0753", + "logsBloom": "0x00080000000000000000000000800000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000100000000000000000000002000000000000000000000400000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0" + }, + { + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "cumulativeGasUsed": "0x5b2a3", + "gasUsed": "0x5b2a3", + "contractAddress": "0x0000000000000000000000000000000000000000", + "logs": [ + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000057e8e2bc40ecff87e6f9b28750d5e7ac004eab9" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0x4", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000003cf2c147d43c98fa96d267572e3fd44a4d3940d4" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0x5", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000004b6b9b31c72836806b0b1104cf1cdab8a0e3bd66" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0x6", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000009ee1aa18f3feb435f811d6ae2f71b7d2a4adce0b" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0x7", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000124abc63f20c6e2088078bd61e2db100ff30836e" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0x8", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000ecf6bdde77c77863ae842b145f9ab296e5eacaf9" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0x9", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000008ba5b0452b0a4da211579aa2e105c3da7c0ad36c" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0xa", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000008488c316e23504b8554e4bde9651802cd45aea24" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0xb", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000edc98fc6240671df8e7ed035ce39143320c1a174" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0xc", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000eef8e3c318fb3d86489fb258847d028adc629e14" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0xd", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x00000000000000000000000054390d6fd8c4d4e77c13ac1e051c9a06ec19112f" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0xe", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000a4cbbd0f503720a0ca3c950d647a8c23fbe9702b" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0xf", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000ab16485d5fc7140b01440c4a1de5007e9321db5f" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0x10", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x00000000000000000000000046624ea6a260714df1e1ef4c13575bc7aadf0f0e" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0x11", + "removed": false + } + ], + "status": "0x1", + "root": "0xd8862b265a22fc3330dd23af04316ea46049e36a36cffac3481727e4d2b9dcb1", + "logsBloom": "0x00000002120000000002000000000000000000100000000400000000000000000000000000001000000008000000000000000020000000000008000000000000000000000000000000110080000010000000000000000000000000000800000042000020000001000010020004000000080000000000000000000000000200002001000800000000020002000000100000000000000000000000000000040000000000000080000020000000000000000000802000080000000800000000400000008000000000400004040002000001000000000000000800000000800000000000000000000000000000000000000800000000000000002000000000000000", + "type": "0x0" + } + ], + "libraries": [ + "src/libraries/OrderEngine.sol:OrderEngine:0xa7fd6eb9cc35c210107d1a918e35ac82bc59961c" + ], + "pending": [], + "returns": {}, + "timestamp": 1710343326, + "chain": 1891, + "multi": false, + "commit": "fbc8dfb" +} \ No newline at end of file diff --git a/broadcast/deployOrderEngine.s.sol/1891/run-1710343345.json b/broadcast/deployOrderEngine.s.sol/1891/run-1710343345.json new file mode 100644 index 0000000..a33c37f --- /dev/null +++ b/broadcast/deployOrderEngine.s.sol/1891/run-1710343345.json @@ -0,0 +1,449 @@ +{ + "transactions": [ + { + "hash": "0x47204932eb7cfa411e90b3f2e9ac0186815b87a053f2f1e71487f71b14bcffab", + "transactionType": "CREATE", + "contractName": "OrderEngine", + "contractAddress": "0xA7FD6EB9cc35c210107d1A918e35ac82BC59961c", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "gas": "0xd7c66", + "data": "0x6080806040523461001a57610b5b9081610020823930815050f35b600080fdfe608060405260048036101561001357600080fd5b60003560e01c90816321cd19a91461069f5781634416e986146104d857816395de97cc146104b7578163b4c07547146100d557508063b91611f41461007c5763c3c1f2ec1461006157600080fd5b602061007461006f3661077e565b610985565b604051908152f35b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d05760206040517fb91209a767a8178c503c992a2db0dd232393048d748c43a04d40fcccacc0df008152f35b600080fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d05780359067ffffffffffffffff82116100d057366023830112156100d05781602461012e93369301359101610895565b60606101c060405161013f8161082d565b60008152600060208201526000604082015260008382015260006080820152600060a0820152600060c0820152600060e0820152600061010082015260006101208201526000610140820152600061016082015282610180820152826101a082015201526101e0818051810103126100d05760208101516040820151916060810151608082015160a08301516101d760c08501610b04565b6101e360e08601610b04565b6101f06101008701610b04565b6101fd6101208801610b04565b9161020b6101408901610b04565b936101608901519586151587036100d0576101808a0151976101a08b0151996101c08c01519b6101e001519c6040519b60208d015260208c5261024d8c610879565b6040519c60208e015260208d526102638d610879565b6040519d60208f01528d6020815261027a90610879565b6040519e8f916102898361082d565b825260208201526040015260608d015260808c015273ffffffffffffffffffffffffffffffffffffffff1660a08b015273ffffffffffffffffffffffffffffffffffffffff1660c08a015273ffffffffffffffffffffffffffffffffffffffff1660e089015273ffffffffffffffffffffffffffffffffffffffff1661010088015273ffffffffffffffffffffffffffffffffffffffff1661012087015215156101408601526101608501526101808401526101a08301526101c082015260405180916020825280516020830152602081015160408301526040810151606083015260608101516080830152608081015160a083015260a081015173ffffffffffffffffffffffffffffffffffffffff1660c083015260c081015173ffffffffffffffffffffffffffffffffffffffff1660e083015260e081015173ffffffffffffffffffffffffffffffffffffffff1661010083015261010081015173ffffffffffffffffffffffffffffffffffffffff1661012083015261012081015173ffffffffffffffffffffffffffffffffffffffff1661014083015261014081015115156101608301526101608101516101808301526101808101516101a083016101e09052610200830161045c916107cf565b906101a08101517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09283858203016101c0860152610499916107cf565b906101c0015191838203016101e08401526104b3916107cf565b0390f35b60206104cd60a06104c73661077e565b01610906565b3b1515604051908152f35b6104e13661077e565b6104ed60a08201610906565b6104f960c08301610906565b61050560e08401610906565b9061016061010094610518868201610906565b9361012090610528828401610906565b9061014091610538838601610927565b9361055161054a610180880188610934565b3691610895565b602081519101209761056a61054a6101a0890189610934565b602081519101209961058361054a6101c08a018a610934565b602081519101209b6040519d8e918a35602084015260208b0135604084015260408b0135606084015260608b0135608084015260808b013560a084015273ffffffffffffffffffffffffffffffffffffffff978880968180941660c08701521660e08501521691015216908b0152169088015215158287015201356101808501526101a08401526101c08301526101e09081830152815261020081019181831067ffffffffffffffff84111761067157507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0090826040526020835261066c6102208201826107cf565b030190f35b6041907f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6040813601126100d057813567ffffffffffffffff918282116100d0576101e09082360301126100d0576106f5908301610985565b60405160208101917f1901000000000000000000000000000000000000000000000000000000000000835260243560228301526042820152604281526080810192818410908411176107505760209350826040525190208152f35b6041847f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc906020828201126100d0576004359167ffffffffffffffff83116100d057826101e0920301126100d05760040190565b919082519283825260005b8481106108195750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b6020818301810151848301820152016107da565b6101e0810190811067ffffffffffffffff82111761084a57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040810190811067ffffffffffffffff82111761084a57604052565b92919267ffffffffffffffff9182811161084a5760405192601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011684019081118482101761084a576040528294818452818301116100d0578281602093846000960137010152565b3573ffffffffffffffffffffffffffffffffffffffff811681036100d05790565b3580151581036100d05790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156100d0570180359067ffffffffffffffff82116100d0576020019181360383136100d057565b61099160a08201610906565b9061099e60c08201610906565b6109aa60e08301610906565b90610160610100936109bd858201610906565b92610120956109cd878401610906565b90610140916109dd838601610927565b92610180946109f161054a87890189610934565b6020815191012098610a0a61054a6101a08a018a610934565b602081519101209a610a2361054a6101c08b018b610934565b602081519101209c6040519e8f927fb91209a767a8178c503c992a2db0dd232393048d748c43a04d40fcccacc0df0060208501528b35604085015260208c0135606085015260408c0135608085015260608c013560a085015260808c013560c085015273ffffffffffffffffffffffffffffffffffffffff988980978180951660e088015216908501521691015216908b0152168489015215159087015201356101a08501526101c08401526101e083015261020090818301528152610220810181811067ffffffffffffffff82111761084a576040526020815191012090565b519073ffffffffffffffffffffffffffffffffffffffff821682036100d05756fea26469706673582212201805f314460b1a5374bb253f72f024bdc8ea21cc2e77073b1164f84307a2015264736f6c63430008150033", + "nonce": "0x20fe" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x0a7cc97780c5f2db2ca4920804f9db50c1c85e841ecf9893669f1679cea3d6df", + "transactionType": "CREATE", + "contractName": "Predicates", + "contractAddress": "0x74ea4485AaC8A7B26BF335BB8Ed2748E9C0EaAfA", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "gas": "0x5dd9f", + "value": "0x0", + "data": "0x6080806040523461001657610464908161001c8239f35b600080fdfe604060808152600436101561001357600080fd5b6000803560e01c80633d303c92146102265780634f38e2b8146101f55780636fe7b0ba146101c457806374261145146101a8578063bf15fcd814610157578063bf797959146100dd578063bfa75143146100b45763ca4ece221461007657600080fd5b346100b15760206100948361008a366102e9565b9093919330610408565b819391936100a7575b5050519015158152f35b109150838061009d565b80fd5b5090346100d9576020906100d06100ca366102e9565b916103a8565b90519015158152f35b5080fd5b5090346100d95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d9576004359167ffffffffffffffff83116100b1575061013c6101356020933690600401610247565b9030610408565b8192919261014e575b50519015158152f35b15915038610145565b50346100b1575061017061016a3661027a565b91610408565b901561017f5760209151908152f35b600482517f1f1b8f61000000000000000000000000000000000000000000000000000000008152fd5b5090346100d9576020906100d06101be366102e9565b9161034f565b50346100b15760206101d98361008a366102e9565b819391936101eb575050519015158152f35b149150838061009d565b50346100b157602061020a8361008a366102e9565b8193919361021c575050519015158152f35b119150838061009d565b50346100b1575061023961016a3661027a565b825191151582526020820152f35b9181601f840112156102755782359167ffffffffffffffff8311610275576020838186019501011161027557565b600080fd5b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126102755760043573ffffffffffffffffffffffffffffffffffffffff8116810361027557916024359067ffffffffffffffff8211610275576102e591600401610247565b9091565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261027557600435916024359067ffffffffffffffff8211610275576102e591600401610247565b90939293848311610275578411610275578101920390565b9290919260005b63ffffffff821690811561039d5761013582610373928888610337565b81610392575b50610388579060201c90610356565b5050915050600190565b600191501438610379565b505050915050600090565b92909192600090815b63ffffffff82169081156103fc57610135826103ce928989610337565b90159081156103f0575b506103e7579060201c906103b1565b50509150915090565b600191501415386103d8565b50505050915050600190565b916000906020928294826040519283375afa60203d1416918261042757565b600051915056fea26469706673582212200458f875fadeeb52c1e054aa965d8292bed98c8059d7cbdeadebad7fe2b4b8e364736f6c63430008150033", + "nonce": "0x20ff" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x7e9f54da0392ef9990cefe21b969c92a5941a40af522abd2208653f7a0054c51", + "transactionType": "CREATE", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "function": null, + "arguments": [ + "0x74ea4485AaC8A7B26BF335BB8Ed2748E9C0EaAfA", + "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8" + ], + "transaction": { + "type": "0x00", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "gas": "0x32cee2", + "value": "0x0", + "data": "0x61014034620002a6576001600160401b0362002e93601f38829003908101601f191684019083821185831017620002905780859160409485948552833981010312620002a65782516001600160a01b039384821691829003620002a6576020015190848216808303620002a6578351906200007a82620002ab565b601d825260208201957f456c656b7472696b204c696d6974204f726465722050726f746f636f6c0000008752600260208751620000b781620002ab565b828152019761763160f01b8952600160005560018060a01b031994858354168355600154338782161760015589519b3391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a351902097208760e05261010098818a524660a05260208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f998a84528983015260608201524660808201523060a082015260a0815260c08101928184109084111762000290578288525190206080523060c0526101209687528315801562000287575b620002785750600480548316919091179055600380549091169190911790558151600081526001600160a01b03821660208201527f1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc9162000234917f649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed090604090a18351600081526001600160a01b0390911660208201529081906040820190565b0390a15190612bcb9283620002c8843960805183611e4a015260a05183611f45015260c05183611e1b015260e05183611e9901525182611ebf01525181611e760152f35b63d92e233d60e01b8152600490fd5b50811562000193565b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620002905760405256fe610180604052600436101561001357600080fd5b60003560e01c80630610f4a714611bfc57806315169dec14611bbc5780632024cbc114611ac95780633644e51514611aa65780633c3efab414611a7f5780635f2a6451146119c457806369328dec1461192b5780636d70f7ae146118ec5780636fda538f146117a5578063715018a61461172957806379ba5097146116235780638da5cb5b146115fc5780638efede3d1461152a57806390d6e14c14611458578063ab37f48614611419578063c2ee3a08146113f6578063c415b95c146113cf578063cf0f969d146113a3578063e30c39781461137c578063f2fde38b146112fa5763fe61e35c1461010457600080fd5b346104cc5760e06003193601126104cc5767ffffffffffffffff6004358181116104cc57610136903690600401611cac565b61016052610100526024358181116104cc57610156903690600401611cac565b60e052610140526044358181116104cc57610175903690600401611cac565b60c052610120526064358181116104cc57610194903690600401611cac565b916084358181116104cc576101ad903690600401611c47565b939060a4358381116104cc576101c7903690600401611cac565b95909360c435116104cc576101e13660c435600401611cac565b93909533600052600760205260ff60406000205416156112ca5760026000541461126c57600260005561016051156112425760e0516101605114801590611234575b8015611228575b6108b85760005b6101605181106108e25750505060148110156104d1575b50505050505060005b610160518110610262576001600055005b610273816101605161010051611d80565b906102848160e05161014051611d4f565b356102958260c05161012051611d4f565b35906102a08461240e565b90670de0b6b3a7640000946103236001600160a01b036102c36101208401611d5f565b166102d060e08401611d5f565b906001600160a01b03604051927fa9059cbb00000000000000000000000000000000000000000000000000000000602085015216602483015288870460448301526044825261031e82611f7f565b612917565b826000526006602052604060002054956101c0820160146103448285611dc0565b905010156103cf575b506001600160a01b037f2b15903b1f1516345ba547119efb6a90ccb8012f1803cc933c0a28b9291a5fef9360019884839461038d61010060c09801611d5f565b998161039c6101208501611d5f565b956080956040519c8d5260208d01520460408b0152046060890152803582890152013560a087015216941692a301610251565b6103df6103e59184959394611dc0565b90612b33565b6103f08394936127cd565b6103fc60a08701611d5f565b936001600160a01b0381163b156104cc578560006001600160a01b038b61045f8f96849886988f8c906040519e8f9c8d9b8c997fb6e1471a000000000000000000000000000000000000000000000000000000008b520493049160048901612796565b0393165af19081156104c0576001987f2b15903b1f1516345ba547119efb6a90ccb8012f1803cc933c0a28b9291a5fef9560c0956001600160a01b039586956104b1575b50945094509850935061034d565b6104ba90611f6b565b386104a3565b6040513d6000823e3d90fd5b600080fd5b6104da91612b33565b90949160805293946104ed6080516127cd565b8281036108b85760005b81811061083557506001600160a01b03608051163b156104cc5760405160a0527f2499e3a20000000000000000000000000000000000000000000000000000000060a0515260c460a0510160c0600460a051015261016051905260e460a0510160e46101605160051b60a05101019061010051906000905b61016051821061068b575050506105bd6105a160209260031960a051820301602460a051015260e0516101405161286b565b60031960a051820301604460a051015260c0516101205161286b565b60031960a051820301606460a05101528281520193906000905b808210610658575050506000949261061f926106029260031960a051840301608460a051015261286b565b60031960a05182030160a460a051015260a0519360a05193611fe9565b0360a051836001600160a01b03608051165af180156104c057610648575b388080808080610248565b61065360a051611f6b565b61063d565b9091948535906001600160a01b03821682036104cc57602080916001600160a01b036001941681520196019201906105d7565b9091927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c60a05182030182527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe2161010051360301843512156104cc5760208061082860019361010051883501906108096107ed6101e084358452868501358785015260408501356040850152606080860135908501526080808601359085015260a06001600160a01b03610740828801611c8b565b16908501526001600160a01b0361075960c08701611c8b565b1660c08501526001600160a01b0361077360e08701611c8b565b1660e08501526101006001600160a01b0361078f828801611c8b565b16908501526101206001600160a01b036107aa828801611c8b565b16908501526101406107bd818701611c9f565b151590850152610160808601359085015261018090806107df8388018861281b565b929093870152850191611fe9565b6101a06107fc8186018661281b565b9185840390860152611fe9565b9161081a6101c0918281019061281b565b929091818503910152611fe9565b950192019201909161056f565b610840818387611d4f565b35906001600160a01b03821682036104cc576108b2600192610863838888611d4f565b3590604051917fa9059cbb0000000000000000000000000000000000000000000000000000000060208401526001600160a01b0360805116602484015260448301526044825261031e82611f7f565b016104f7565b60046040517ffc235960000000000000000000000000000000000000000000000000000000008152fd5b6108f3816101605161010051611d80565b906109048160e05161014051611d4f565b35916109168260c05161012051611d4f565b3592858310156111f95761092f8360051b860186611dc0565b90918592819661093e8661240e565b92602087013542116111c8576060870135159081156111bb575b81156111b2575b5080156111aa575b611180576001600160a01b036109806101208801611d5f565b16600052600560205260ff60406000205416158015611157575b61112d576109ab6101008701611d5f565b6001600160a01b03806109c16101208a01611d5f565b16911614611103576001600160a01b036109dd60a08801611d5f565b161580156110e6575b80156110c9575b80156110ad575b6110835760c086016001600160a01b03610a0d82611d5f565b1615159081611066575b5061103c5782600052600660205260406000205460408701351461101257610a426101408701611d73565b15610fd25750670de0b6b3a76400008702878104670de0b6b3a76400001488151715610f795784610a72916124fd565b670de0b6b3a76400006040870135818102918183041490151715610f7957610a9f906060880135906124fd565b10610fa8578160005260066020526040600020805490670de0b6b3a764000089048201809211610f79575560808501358015670de0b6b3a76400008904808302839004141715610f7957610b0490604087013590670de0b6b3a76400008a04026124fd565b826000526006602052604086013560406000205411610f4f57670de0b6b3a7640000809195049704925b610b706020610b3d3689612182565b604051809381927f95de97cc0000000000000000000000000000000000000000000000000000000083526004830161230b565b038173a7fd6eb9cc35c210107d1a918e35ac82bc59961c5af49081156104c057600091610f15575b5015610ead57610bfe916020916001600160a01b03610bb960a08a01611d5f565b16906040518095819482937f1626ba7e000000000000000000000000000000000000000000000000000000008452896004850152604060248501526044840191611fe9565b03915afa9081156104c057600091610e32575b507fffffffff000000000000000000000000000000000000000000000000000000007f1626ba7e00000000000000000000000000000000000000000000000000000000911603610e08575b6101808401610c6b8186611dc0565b9050610dc0575b506101a084016014610c848287611dc0565b90501015610d01575b505060019450610cc0906001600160a01b03610cac6101008601611d5f565b1690610cba60a08601611d5f565b916128a8565b80610cce575b505001610231565b6001600160a01b03610ce6610100610cfa9401611d5f565b16906001600160a01b0360045416916128a8565b3880610cc6565b6103df610d0e9186611dc0565b909192610d1a846127cd565b610d2660a08801611d5f565b91816000526006602052604060002054936001600160a01b0386163b156104cc5786946040519b8c9687967f1ad047d20000000000000000000000000000000000000000000000000000000088526004880196610d8297612796565b03916001600160a01b031691815a6000948591f19081156104c057600195610cc092610db1575b819250610c8d565b610dba90611f6b565b38610da9565b610dcd610dd39186611dc0565b90612028565b15610dde5738610c72565b60046040517fb6629c02000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b90506020813d602011610ea5575b81610e4d60209383611f9b565b810103126104cc57517fffffffff00000000000000000000000000000000000000000000000000000000811681036104cc577fffffffff00000000000000000000000000000000000000000000000000000000610c11565b3d9150610e40565b610ebf610ecd92610ec592369161212d565b836126cf565b919091612536565b6001600160a01b0380610ee260a08801611d5f565b1691160315610c5c5760046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b90506020813d602011610f47575b81610f3060209383611f9b565b810103126104cc57610f4190611fdc565b38610b98565b3d9150610f23565b60046040517f17015bc1000000000000000000000000000000000000000000000000000000008152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60046040517fa0de07d3000000000000000000000000000000000000000000000000000000008152fd5b935091955082606085013511610fa857604084013591670de0b6b3a764000060808601359483600052600660205260408701356040600020550496610b2e565b60046040517fca92fdbb000000000000000000000000000000000000000000000000000000008152fd5b60046040517fd4dfdafe000000000000000000000000000000000000000000000000000000008152fd5b90506001600160a01b0361107a3392611d5f565b16141538610a17565b60046040517fd92e233d000000000000000000000000000000000000000000000000000000008152fd5b506001600160a01b036110c260e08801611d5f565b16156109f4565b506001600160a01b036110df6101008801611d5f565b16156109ed565b506001600160a01b036110fc6101208801611d5f565b16156109e6565b60046040517fdd807227000000000000000000000000000000000000000000000000000000008152fd5b60046040517ff84835a0000000000000000000000000000000000000000000000000000000008152fd5b506001600160a01b0361116d6101008801611d5f565b1660005260ff604060002054161561099a565b60046040517f1f2a2005000000000000000000000000000000000000000000000000000000008152fd5b508015610967565b9050153861095f565b6040880135159150610958565b602484604051907f2e775cae0000000000000000000000000000000000000000000000000000000082526004820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b508160c051141561022a565b5060c05160e0511415610223565b60046040517f521299a9000000000000000000000000000000000000000000000000000000008152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b60246040517fc0ae66ad000000000000000000000000000000000000000000000000000000008152336004820152fd5b346104cc5760206003193601126104cc57611313611c75565b61131b611cdd565b6001600160a01b0380911690817fffffffffffffffffffffffff00000000000000000000000000000000000000006002541617600255600154167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700600080a3005b346104cc5760006003193601126104cc5760206001600160a01b0360025416604051908152f35b346104cc5760206003193601126104cc5760043560005260066020526020604060002054604051908152f35b346104cc5760006003193601126104cc5760206001600160a01b0360045416604051908152f35b346104cc5760006003193601126104cc576020604051670de0b6b3a76400008152f35b346104cc5760206003193601126104cc576001600160a01b0361143a611c75565b166000526005602052602060ff604060002054166040519015158152f35b346104cc5760206003193601126104cc576004356001600160a01b038082168092036104cc57611486611cdd565b8115611083576003549081169082821461150057604080516001600160a01b03938416815292841660208401527fffffffffffffffffffffffff0000000000000000000000000000000000000000927f1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc9190a11617600355005b60046040517fea0f8928000000000000000000000000000000000000000000000000000000008152fd5b346104cc5760206003193601126104cc57611543611c75565b61154b611cdd565b6001600160a01b0390818116918215611083576004549081168381146115d257604080516001600160a01b0392831681529390911660208401527fffffffffffffffffffffffff0000000000000000000000000000000000000000927f649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed09190a11617600455005b60046040517fa133328a000000000000000000000000000000000000000000000000000000008152fd5b346104cc5760006003193601126104cc5760206001600160a01b0360015416604051908152f35b346104cc5760006003193601126104cc576002546001600160a01b0333818316036116a5577fffffffffffffffffffffffff00000000000000000000000000000000000000008092166002556001549133908316176001553391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152fd5b346104cc5760006003193601126104cc57611742611cdd565b60006001600160a01b037fffffffffffffffffffffffff00000000000000000000000000000000000000008060025416600255600154908116600155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346104cc5760406003193601126104cc5767ffffffffffffffff6004358181116104cc576117d7903690600401611cac565b916024359081116104cc576117f0903690600401611cac565b6117f8611cdd565b8315611242578084036108b85760005b84811061181157005b6001600160a01b03908161182e611829838989611d4f565b611d5f565b1615611083576001917f49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e27441761186b611866848789611d4f565b611d73565b8261187a611829868c8c611d4f565b166000526118bd6020916005835260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b6118cb611829858b8b611d4f565b926118da61186686898b611d4f565b9360405194151585521692a201611808565b346104cc5760206003193601126104cc576001600160a01b0361190d611c75565b166000526007602052602060ff604060002054166040519015158152f35b346104cc5760606003193601126104cc57611944611c75565b604435906001600160a01b03908183168093036104cc57611963611cdd565b1690811580156119bc575b611083576119ba91604051917fa9059cbb000000000000000000000000000000000000000000000000000000006020840152602483015260243560448301526044825261031e82611f7f565b005b50801561196e565b346104cc576119d236611c14565b6119de60a08201611d5f565b6001600160a01b0333911603611a55576119f78161240e565b80600052600660205260408060002054920135918281146110125760407f87b5f0afdc3a118b68246141c5bd338672ab3e901be636e27116238d284de6ac918151908482526020820152a16000526006602052604060002055600080f35b60046040517f4ca88867000000000000000000000000000000000000000000000000000000008152fd5b346104cc5760006003193601126104cc5760206001600160a01b0360035416604051908152f35b346104cc5760006003193601126104cc576020611ac1611e11565b604051908152f35b346104cc5760406003193601126104cc57611ae2611c75565b60243590811515908183036104cc576001600160a01b0390611b02611cdd565b16918215611083578260005260076020528160ff60406000205416151514611b92577fcba86444cdc912f5fa5f53c20361b3517933eb181876b3f4a0d47478c6a3039b91611b89602092856000526007845260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b604051908152a2005b60046040517f5b2625c0000000000000000000000000000000000000000000000000000000008152fd5b346104cc5760206003193601126104cc5760043567ffffffffffffffff81116104cc57611bf2610dcd6020923690600401611c47565b6040519015158152f35b346104cc576020611ac1611c0f36611c14565b61240e565b600319906020828201126104cc576004359167ffffffffffffffff83116104cc57826101e0920301126104cc5760040190565b9181601f840112156104cc5782359167ffffffffffffffff83116104cc57602083818601950101116104cc57565b600435906001600160a01b03821682036104cc57565b35906001600160a01b03821682036104cc57565b359081151582036104cc57565b9181601f840112156104cc5782359167ffffffffffffffff83116104cc576020808501948460051b0101116104cc57565b6001600160a01b03600154163303611cf157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b91908110156111f95760051b0190565b356001600160a01b03811681036104cc5790565b3580151581036104cc5790565b91908110156111f95760051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe21813603018212156104cc570190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156104cc570180359067ffffffffffffffff82116104cc576020019181360383136104cc57565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016301480611f42575b15611e6c577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117611f135760405251902090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b507f00000000000000000000000000000000000000000000000000000000000000004614611e43565b67ffffffffffffffff8111611f1357604052565b6080810190811067ffffffffffffffff821117611f1357604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611f1357604052565b519081151582036104cc57565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b90612080906001600160a01b036003541692604093849283518095819482937f3d303c920000000000000000000000000000000000000000000000000000000084528560048501528760248501526044840191611fe9565b03915afa9081156120e85760009283926120a8575b5050816120a0575090565b600191501490565b9080939250813d83116120e1575b6120c08183611f9b565b810103126120de575060206120d482611fdc565b9101513880612095565b80fd5b503d6120b6565b82513d6000823e3d90fd5b67ffffffffffffffff8111611f1357601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192612139826120f3565b916121476040519384611f9b565b8294818452818301116104cc578281602093846000960137010152565b9080601f830112156104cc5781602061217f9335910161212d565b90565b9190916101e09081818503126104cc576040519182019067ffffffffffffffff9183811083821117611f1357604052829481358452602082013560208501526040820135604085015260608201356060850152608082013560808501526121eb60a08301611c8b565b60a08501526121fc60c08301611c8b565b60c085015261220d60e08301611c8b565b60e0850152610100612220818401611c8b565b90850152610120612232818401611c8b565b90850152610140612244818401611c9f565b908501526101608083013590850152610180808301358481116104cc578261226d918501612164565b908501526101a0808301358481116104cc578261228b918501612164565b908501526101c092838301359081116104cc576122a89201612164565b910152565b919082519283825260005b8481106122f75750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b6020818301810151848301820152016122b8565b9061217f916020815281516020820152602082015160408201526040820151606082015260608201516080820152608082015160a082015260a08201516001600160a01b0380911660c08301528060c08401511660e083015260e0830151816101009116818401528301518161012091168184015283015190610140911681830152820151610160901515818301528201516101809081830152820151906101e06123c36101a09382858501526102008401906122ad565b928401516123fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0946101c0928686830301848701526122ad565b94015192828503019101526122ad565b602061241e612451923690612182565b604051809381927fc3c1f2ec0000000000000000000000000000000000000000000000000000000083526004830161230b565b038173a7fd6eb9cc35c210107d1a918e35ac82bc59961c5af49081156104c0576000916124cc575b50612482611e11565b906040519060208201927f1901000000000000000000000000000000000000000000000000000000000000845260228301526042820152604281526124c681611f7f565b51902090565b906020823d82116124f5575b816124e560209383611f9b565b810103126120de57505138612479565b3d91506124d8565b8115612507570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60058110156126a057806125475750565b600181036125ad5760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152fd5b600281036126135760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152fd5b60031461261c57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9060418151146000146126fd576126f9916020820151906060604084015193015160001a90612707565b9091565b5050600090600290565b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831161278a5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561277d5781516001600160a01b03811615612777579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b926001600160a01b0361217f98969360c0969386521660208501526040840152606083015260808201528160a08201520191611fe9565b6001600160a01b0316308114908115612812575b506127e857565b60046040517f8a5039c1000000000000000000000000000000000000000000000000000000008152fd5b905015386127e1565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156104cc57016020813591019167ffffffffffffffff82116104cc5781360383136104cc57565b90918281527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83116104cc5760209260051b809284830137010190565b91906001600160a01b03604051927f23b872dd00000000000000000000000000000000000000000000000000000000602085015216602483015230604483015260648201526064815260a081019181831067ffffffffffffffff841117611f135761291592604052612917565b565b6001600160a01b031690604051604081019080821067ffffffffffffffff831117611f13576129a8916040526020938482527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564858301526000808587829751910182855af13d15612a5f573d9161298d836120f3565b9261299b6040519485611f9b565b83523d868885013e612a63565b908151806129b7575b50505050565b828491810103126120de5750816129ce9101611fdc565b156129db578080806129b1565b608490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b6060915b91929015612ade5750815115612a77575090565b3b15612a805790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b825190915015612af15750805190602001fd5b612b2f906040519182917f08c379a00000000000000000000000000000000000000000000000000000000083526020600484015260248301906122ad565b0390fd5b9160148210612b6b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec6014843560601c9401920190565b60046040517fef356d7a000000000000000000000000000000000000000000000000000000008152fdfea26469706673582212202359e3ddbb19d82e21a3ac6f2af2942cb384f157a832b656ef265ddfd1e9389064736f6c6343000815003300000000000000000000000074ea4485aac8a7b26bf335bb8ed2748e9c0eaafa0000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8", + "nonce": "0x2100" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x83f6e9a185aeaaa717abe96e5db03da011e80aed3f762a44df785244538ff163", + "transactionType": "CALL", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "function": "manageOperatorPrivilege(address,bool)", + "arguments": [ + "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "true" + ], + "transaction": { + "type": "0x00", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "to": "0xf0ef43a073ee30239a1ecc84e1dadc8895dbc1c2", + "gas": "0x111af", + "value": "0x0", + "data": "0x2024cbc10000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b80000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x2101" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionType": "CALL", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "function": "updateTokenWhitelist(address[],bool[])", + "arguments": [ + "[0x057e8e2bC40ECff87e6F9b28750D5E7AC004Eab9, 0x3cf2c147d43C98Fa96d267572e3FD44A4D3940d4, 0x4B6b9B31c72836806B0B1104Cf1CdAB8A0E3BD66, 0x9Ee1Aa18F3FEB435f811d6AE2F71B7D2a4Adce0B, 0x124ABC63F20c6e2088078bd61e2Db100Ff30836e, 0xecf6Bdde77C77863Ae842b145f9ab296E5eAcAF9, 0x8bA5b0452b0a4da211579AA2e105c3da7C0Ad36c, 0x8488c316e23504B8554e4BdE9651802CD45aea24, 0xeDc98fc6240671dF8e7eD035CE39143320c1A174, 0xeEf8e3c318fb3d86489FB258847d028adC629e14, 0x54390D6FD8C4d4e77c13Ac1E051C9A06eC19112f, 0xA4CBbd0f503720a0cA3C950D647A8c23FBE9702B, 0xab16485D5fC7140b01440C4a1dE5007e9321DB5F, 0x46624eA6a260714df1E1EF4c13575Bc7AAdf0f0e]", + "[true, true, true, true, true, true, true, true, true, true, true, true, true, true]" + ], + "transaction": { + "type": "0x00", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "to": "0xf0ef43a073ee30239a1ecc84e1dadc8895dbc1c2", + "gas": "0x85541", + "value": "0x0", + "data": "0x6fda538f00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000220000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000057e8e2bc40ecff87e6f9b28750d5e7ac004eab90000000000000000000000003cf2c147d43c98fa96d267572e3fd44a4d3940d40000000000000000000000004b6b9b31c72836806b0b1104cf1cdab8a0e3bd660000000000000000000000009ee1aa18f3feb435f811d6ae2f71b7d2a4adce0b000000000000000000000000124abc63f20c6e2088078bd61e2db100ff30836e000000000000000000000000ecf6bdde77c77863ae842b145f9ab296e5eacaf90000000000000000000000008ba5b0452b0a4da211579aa2e105c3da7c0ad36c0000000000000000000000008488c316e23504b8554e4bde9651802cd45aea24000000000000000000000000edc98fc6240671df8e7ed035ce39143320c1a174000000000000000000000000eef8e3c318fb3d86489fb258847d028adc629e1400000000000000000000000054390d6fd8c4d4e77c13ac1e051c9a06ec19112f000000000000000000000000a4cbbd0f503720a0ca3c950d647a8c23fbe9702b000000000000000000000000ab16485d5fc7140b01440c4a1de5007e9321db5f00000000000000000000000046624ea6a260714df1e1ef4c13575bc7aadf0f0e000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x2102" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0x47204932eb7cfa411e90b3f2e9ac0186815b87a053f2f1e71487f71b14bcffab", + "transactionIndex": "0x0", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": null, + "cumulativeGasUsed": "0xa6069", + "gasUsed": "0xa6069", + "contractAddress": "0xA7FD6EB9cc35c210107d1A918e35ac82BC59961c", + "logs": [], + "status": "0x1", + "root": "0x7b2d1e6d6956afc3352a3cf385d0a5ccc29033b5a67753aae694bcce792fbf25", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0" + }, + { + "transactionHash": "0x0a7cc97780c5f2db2ca4920804f9db50c1c85e841ecf9893669f1679cea3d6df", + "transactionIndex": "0x1", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": null, + "cumulativeGasUsed": "0x48360", + "gasUsed": "0x48360", + "contractAddress": "0x74ea4485AaC8A7B26BF335BB8Ed2748E9C0EaAfA", + "logs": [], + "status": "0x1", + "root": "0x4b55fbe494e060b272557e969ccaca8bd4f388c8db16ff3ba685d8c919c21af1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0" + }, + { + "transactionHash": "0x7e9f54da0392ef9990cefe21b969c92a5941a40af522abd2208653f7a0054c51", + "transactionIndex": "0x2", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": null, + "cumulativeGasUsed": "0x27183a", + "gasUsed": "0x27183a", + "contractAddress": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "logs": [ + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8" + ], + "data": "0x", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0x7e9f54da0392ef9990cefe21b969c92a5941a40af522abd2208653f7a0054c51", + "transactionIndex": "0x2", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed0" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0x7e9f54da0392ef9990cefe21b969c92a5941a40af522abd2208653f7a0054c51", + "transactionIndex": "0x2", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0x7e9f54da0392ef9990cefe21b969c92a5941a40af522abd2208653f7a0054c51", + "transactionIndex": "0x2", + "logIndex": "0x2", + "removed": false + } + ], + "status": "0x1", + "root": "0xbec266d3d1354fc5fa1952f26471c1644bd2b945bbdda31708f7ddf9f0655872", + "logsBloom": "0x00020000000000000000000000800000000000000010000000800000080000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000001000000000000000000000000000000000000020000000000000004000800000800000000000000000000000000400000000000000000000000000000000000001000080000000000000000000000000000000000000000000000000000000000002000000000000000000000400000400000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0" + }, + { + "transactionHash": "0x83f6e9a185aeaaa717abe96e5db03da011e80aed3f762a44df785244538ff163", + "transactionIndex": "0x3", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "cumulativeGasUsed": "0xbb23", + "gasUsed": "0xbb23", + "contractAddress": "0x0000000000000000000000000000000000000000", + "logs": [ + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0xcba86444cdc912f5fa5f53c20361b3517933eb181876b3f4a0d47478c6a3039b", + "0x0000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0x83f6e9a185aeaaa717abe96e5db03da011e80aed3f762a44df785244538ff163", + "transactionIndex": "0x3", + "logIndex": "0x3", + "removed": false + } + ], + "status": "0x1", + "root": "0x86db390e70e6496624f67ea3219f32e202ae18d0439cb94db008769f17bd0753", + "logsBloom": "0x00080000000000000000000000800000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000100000000000000000000002000000000000000000000400000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0" + }, + { + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "cumulativeGasUsed": "0x5b2a3", + "gasUsed": "0x5b2a3", + "contractAddress": "0x0000000000000000000000000000000000000000", + "logs": [ + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000057e8e2bc40ecff87e6f9b28750d5e7ac004eab9" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0x4", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000003cf2c147d43c98fa96d267572e3fd44a4d3940d4" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0x5", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000004b6b9b31c72836806b0b1104cf1cdab8a0e3bd66" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0x6", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000009ee1aa18f3feb435f811d6ae2f71b7d2a4adce0b" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0x7", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000124abc63f20c6e2088078bd61e2db100ff30836e" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0x8", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000ecf6bdde77c77863ae842b145f9ab296e5eacaf9" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0x9", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000008ba5b0452b0a4da211579aa2e105c3da7c0ad36c" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0xa", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000008488c316e23504b8554e4bde9651802cd45aea24" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0xb", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000edc98fc6240671df8e7ed035ce39143320c1a174" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0xc", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000eef8e3c318fb3d86489fb258847d028adc629e14" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0xd", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x00000000000000000000000054390d6fd8c4d4e77c13ac1e051c9a06ec19112f" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0xe", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000a4cbbd0f503720a0ca3c950d647a8c23fbe9702b" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0xf", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000ab16485d5fc7140b01440c4a1de5007e9321db5f" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0x10", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x00000000000000000000000046624ea6a260714df1e1ef4c13575bc7aadf0f0e" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0x11", + "removed": false + } + ], + "status": "0x1", + "root": "0xd8862b265a22fc3330dd23af04316ea46049e36a36cffac3481727e4d2b9dcb1", + "logsBloom": "0x00000002120000000002000000000000000000100000000400000000000000000000000000001000000008000000000000000020000000000008000000000000000000000000000000110080000010000000000000000000000000000800000042000020000001000010020004000000080000000000000000000000000200002001000800000000020002000000100000000000000000000000000000040000000000000080000020000000000000000000802000080000000800000000400000008000000000400004040002000001000000000000000800000000800000000000000000000000000000000000000800000000000000002000000000000000", + "type": "0x0" + } + ], + "libraries": [ + "src/libraries/OrderEngine.sol:OrderEngine:0xa7fd6eb9cc35c210107d1a918e35ac82bc59961c" + ], + "pending": [], + "returns": {}, + "timestamp": 1710343345, + "chain": 1891, + "multi": false, + "commit": "fbc8dfb" +} \ No newline at end of file diff --git a/broadcast/deployOrderEngine.s.sol/1891/run-latest.json b/broadcast/deployOrderEngine.s.sol/1891/run-latest.json new file mode 100644 index 0000000..a33c37f --- /dev/null +++ b/broadcast/deployOrderEngine.s.sol/1891/run-latest.json @@ -0,0 +1,449 @@ +{ + "transactions": [ + { + "hash": "0x47204932eb7cfa411e90b3f2e9ac0186815b87a053f2f1e71487f71b14bcffab", + "transactionType": "CREATE", + "contractName": "OrderEngine", + "contractAddress": "0xA7FD6EB9cc35c210107d1A918e35ac82BC59961c", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "gas": "0xd7c66", + "data": "0x6080806040523461001a57610b5b9081610020823930815050f35b600080fdfe608060405260048036101561001357600080fd5b60003560e01c90816321cd19a91461069f5781634416e986146104d857816395de97cc146104b7578163b4c07547146100d557508063b91611f41461007c5763c3c1f2ec1461006157600080fd5b602061007461006f3661077e565b610985565b604051908152f35b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d05760206040517fb91209a767a8178c503c992a2db0dd232393048d748c43a04d40fcccacc0df008152f35b600080fd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d05780359067ffffffffffffffff82116100d057366023830112156100d05781602461012e93369301359101610895565b60606101c060405161013f8161082d565b60008152600060208201526000604082015260008382015260006080820152600060a0820152600060c0820152600060e0820152600061010082015260006101208201526000610140820152600061016082015282610180820152826101a082015201526101e0818051810103126100d05760208101516040820151916060810151608082015160a08301516101d760c08501610b04565b6101e360e08601610b04565b6101f06101008701610b04565b6101fd6101208801610b04565b9161020b6101408901610b04565b936101608901519586151587036100d0576101808a0151976101a08b0151996101c08c01519b6101e001519c6040519b60208d015260208c5261024d8c610879565b6040519c60208e015260208d526102638d610879565b6040519d60208f01528d6020815261027a90610879565b6040519e8f916102898361082d565b825260208201526040015260608d015260808c015273ffffffffffffffffffffffffffffffffffffffff1660a08b015273ffffffffffffffffffffffffffffffffffffffff1660c08a015273ffffffffffffffffffffffffffffffffffffffff1660e089015273ffffffffffffffffffffffffffffffffffffffff1661010088015273ffffffffffffffffffffffffffffffffffffffff1661012087015215156101408601526101608501526101808401526101a08301526101c082015260405180916020825280516020830152602081015160408301526040810151606083015260608101516080830152608081015160a083015260a081015173ffffffffffffffffffffffffffffffffffffffff1660c083015260c081015173ffffffffffffffffffffffffffffffffffffffff1660e083015260e081015173ffffffffffffffffffffffffffffffffffffffff1661010083015261010081015173ffffffffffffffffffffffffffffffffffffffff1661012083015261012081015173ffffffffffffffffffffffffffffffffffffffff1661014083015261014081015115156101608301526101608101516101808301526101808101516101a083016101e09052610200830161045c916107cf565b906101a08101517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09283858203016101c0860152610499916107cf565b906101c0015191838203016101e08401526104b3916107cf565b0390f35b60206104cd60a06104c73661077e565b01610906565b3b1515604051908152f35b6104e13661077e565b6104ed60a08201610906565b6104f960c08301610906565b61050560e08401610906565b9061016061010094610518868201610906565b9361012090610528828401610906565b9061014091610538838601610927565b9361055161054a610180880188610934565b3691610895565b602081519101209761056a61054a6101a0890189610934565b602081519101209961058361054a6101c08a018a610934565b602081519101209b6040519d8e918a35602084015260208b0135604084015260408b0135606084015260608b0135608084015260808b013560a084015273ffffffffffffffffffffffffffffffffffffffff978880968180941660c08701521660e08501521691015216908b0152169088015215158287015201356101808501526101a08401526101c08301526101e09081830152815261020081019181831067ffffffffffffffff84111761067157507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0090826040526020835261066c6102208201826107cf565b030190f35b6041907f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6040813601126100d057813567ffffffffffffffff918282116100d0576101e09082360301126100d0576106f5908301610985565b60405160208101917f1901000000000000000000000000000000000000000000000000000000000000835260243560228301526042820152604281526080810192818410908411176107505760209350826040525190208152f35b6041847f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc906020828201126100d0576004359167ffffffffffffffff83116100d057826101e0920301126100d05760040190565b919082519283825260005b8481106108195750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b6020818301810151848301820152016107da565b6101e0810190811067ffffffffffffffff82111761084a57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040810190811067ffffffffffffffff82111761084a57604052565b92919267ffffffffffffffff9182811161084a5760405192601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011684019081118482101761084a576040528294818452818301116100d0578281602093846000960137010152565b3573ffffffffffffffffffffffffffffffffffffffff811681036100d05790565b3580151581036100d05790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156100d0570180359067ffffffffffffffff82116100d0576020019181360383136100d057565b61099160a08201610906565b9061099e60c08201610906565b6109aa60e08301610906565b90610160610100936109bd858201610906565b92610120956109cd878401610906565b90610140916109dd838601610927565b92610180946109f161054a87890189610934565b6020815191012098610a0a61054a6101a08a018a610934565b602081519101209a610a2361054a6101c08b018b610934565b602081519101209c6040519e8f927fb91209a767a8178c503c992a2db0dd232393048d748c43a04d40fcccacc0df0060208501528b35604085015260208c0135606085015260408c0135608085015260608c013560a085015260808c013560c085015273ffffffffffffffffffffffffffffffffffffffff988980978180951660e088015216908501521691015216908b0152168489015215159087015201356101a08501526101c08401526101e083015261020090818301528152610220810181811067ffffffffffffffff82111761084a576040526020815191012090565b519073ffffffffffffffffffffffffffffffffffffffff821682036100d05756fea26469706673582212201805f314460b1a5374bb253f72f024bdc8ea21cc2e77073b1164f84307a2015264736f6c63430008150033", + "nonce": "0x20fe" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x0a7cc97780c5f2db2ca4920804f9db50c1c85e841ecf9893669f1679cea3d6df", + "transactionType": "CREATE", + "contractName": "Predicates", + "contractAddress": "0x74ea4485AaC8A7B26BF335BB8Ed2748E9C0EaAfA", + "function": null, + "arguments": null, + "transaction": { + "type": "0x00", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "gas": "0x5dd9f", + "value": "0x0", + "data": "0x6080806040523461001657610464908161001c8239f35b600080fdfe604060808152600436101561001357600080fd5b6000803560e01c80633d303c92146102265780634f38e2b8146101f55780636fe7b0ba146101c457806374261145146101a8578063bf15fcd814610157578063bf797959146100dd578063bfa75143146100b45763ca4ece221461007657600080fd5b346100b15760206100948361008a366102e9565b9093919330610408565b819391936100a7575b5050519015158152f35b109150838061009d565b80fd5b5090346100d9576020906100d06100ca366102e9565b916103a8565b90519015158152f35b5080fd5b5090346100d95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d9576004359167ffffffffffffffff83116100b1575061013c6101356020933690600401610247565b9030610408565b8192919261014e575b50519015158152f35b15915038610145565b50346100b1575061017061016a3661027a565b91610408565b901561017f5760209151908152f35b600482517f1f1b8f61000000000000000000000000000000000000000000000000000000008152fd5b5090346100d9576020906100d06101be366102e9565b9161034f565b50346100b15760206101d98361008a366102e9565b819391936101eb575050519015158152f35b149150838061009d565b50346100b157602061020a8361008a366102e9565b8193919361021c575050519015158152f35b119150838061009d565b50346100b1575061023961016a3661027a565b825191151582526020820152f35b9181601f840112156102755782359167ffffffffffffffff8311610275576020838186019501011161027557565b600080fd5b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126102755760043573ffffffffffffffffffffffffffffffffffffffff8116810361027557916024359067ffffffffffffffff8211610275576102e591600401610247565b9091565b9060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261027557600435916024359067ffffffffffffffff8211610275576102e591600401610247565b90939293848311610275578411610275578101920390565b9290919260005b63ffffffff821690811561039d5761013582610373928888610337565b81610392575b50610388579060201c90610356565b5050915050600190565b600191501438610379565b505050915050600090565b92909192600090815b63ffffffff82169081156103fc57610135826103ce928989610337565b90159081156103f0575b506103e7579060201c906103b1565b50509150915090565b600191501415386103d8565b50505050915050600190565b916000906020928294826040519283375afa60203d1416918261042757565b600051915056fea26469706673582212200458f875fadeeb52c1e054aa965d8292bed98c8059d7cbdeadebad7fe2b4b8e364736f6c63430008150033", + "nonce": "0x20ff" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x7e9f54da0392ef9990cefe21b969c92a5941a40af522abd2208653f7a0054c51", + "transactionType": "CREATE", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "function": null, + "arguments": [ + "0x74ea4485AaC8A7B26BF335BB8Ed2748E9C0EaAfA", + "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8" + ], + "transaction": { + "type": "0x00", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "gas": "0x32cee2", + "value": "0x0", + "data": "0x61014034620002a6576001600160401b0362002e93601f38829003908101601f191684019083821185831017620002905780859160409485948552833981010312620002a65782516001600160a01b039384821691829003620002a6576020015190848216808303620002a6578351906200007a82620002ab565b601d825260208201957f456c656b7472696b204c696d6974204f726465722050726f746f636f6c0000008752600260208751620000b781620002ab565b828152019761763160f01b8952600160005560018060a01b031994858354168355600154338782161760015589519b3391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a351902097208760e05261010098818a524660a05260208101917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f998a84528983015260608201524660808201523060a082015260a0815260c08101928184109084111762000290578288525190206080523060c0526101209687528315801562000287575b620002785750600480548316919091179055600380549091169190911790558151600081526001600160a01b03821660208201527f1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc9162000234917f649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed090604090a18351600081526001600160a01b0390911660208201529081906040820190565b0390a15190612bcb9283620002c8843960805183611e4a015260a05183611f45015260c05183611e1b015260e05183611e9901525182611ebf01525181611e760152f35b63d92e233d60e01b8152600490fd5b50811562000193565b634e487b7160e01b600052604160045260246000fd5b600080fd5b604081019081106001600160401b03821117620002905760405256fe610180604052600436101561001357600080fd5b60003560e01c80630610f4a714611bfc57806315169dec14611bbc5780632024cbc114611ac95780633644e51514611aa65780633c3efab414611a7f5780635f2a6451146119c457806369328dec1461192b5780636d70f7ae146118ec5780636fda538f146117a5578063715018a61461172957806379ba5097146116235780638da5cb5b146115fc5780638efede3d1461152a57806390d6e14c14611458578063ab37f48614611419578063c2ee3a08146113f6578063c415b95c146113cf578063cf0f969d146113a3578063e30c39781461137c578063f2fde38b146112fa5763fe61e35c1461010457600080fd5b346104cc5760e06003193601126104cc5767ffffffffffffffff6004358181116104cc57610136903690600401611cac565b61016052610100526024358181116104cc57610156903690600401611cac565b60e052610140526044358181116104cc57610175903690600401611cac565b60c052610120526064358181116104cc57610194903690600401611cac565b916084358181116104cc576101ad903690600401611c47565b939060a4358381116104cc576101c7903690600401611cac565b95909360c435116104cc576101e13660c435600401611cac565b93909533600052600760205260ff60406000205416156112ca5760026000541461126c57600260005561016051156112425760e0516101605114801590611234575b8015611228575b6108b85760005b6101605181106108e25750505060148110156104d1575b50505050505060005b610160518110610262576001600055005b610273816101605161010051611d80565b906102848160e05161014051611d4f565b356102958260c05161012051611d4f565b35906102a08461240e565b90670de0b6b3a7640000946103236001600160a01b036102c36101208401611d5f565b166102d060e08401611d5f565b906001600160a01b03604051927fa9059cbb00000000000000000000000000000000000000000000000000000000602085015216602483015288870460448301526044825261031e82611f7f565b612917565b826000526006602052604060002054956101c0820160146103448285611dc0565b905010156103cf575b506001600160a01b037f2b15903b1f1516345ba547119efb6a90ccb8012f1803cc933c0a28b9291a5fef9360019884839461038d61010060c09801611d5f565b998161039c6101208501611d5f565b956080956040519c8d5260208d01520460408b0152046060890152803582890152013560a087015216941692a301610251565b6103df6103e59184959394611dc0565b90612b33565b6103f08394936127cd565b6103fc60a08701611d5f565b936001600160a01b0381163b156104cc578560006001600160a01b038b61045f8f96849886988f8c906040519e8f9c8d9b8c997fb6e1471a000000000000000000000000000000000000000000000000000000008b520493049160048901612796565b0393165af19081156104c0576001987f2b15903b1f1516345ba547119efb6a90ccb8012f1803cc933c0a28b9291a5fef9560c0956001600160a01b039586956104b1575b50945094509850935061034d565b6104ba90611f6b565b386104a3565b6040513d6000823e3d90fd5b600080fd5b6104da91612b33565b90949160805293946104ed6080516127cd565b8281036108b85760005b81811061083557506001600160a01b03608051163b156104cc5760405160a0527f2499e3a20000000000000000000000000000000000000000000000000000000060a0515260c460a0510160c0600460a051015261016051905260e460a0510160e46101605160051b60a05101019061010051906000905b61016051821061068b575050506105bd6105a160209260031960a051820301602460a051015260e0516101405161286b565b60031960a051820301604460a051015260c0516101205161286b565b60031960a051820301606460a05101528281520193906000905b808210610658575050506000949261061f926106029260031960a051840301608460a051015261286b565b60031960a05182030160a460a051015260a0519360a05193611fe9565b0360a051836001600160a01b03608051165af180156104c057610648575b388080808080610248565b61065360a051611f6b565b61063d565b9091948535906001600160a01b03821682036104cc57602080916001600160a01b036001941681520196019201906105d7565b9091927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c60a05182030182527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe2161010051360301843512156104cc5760208061082860019361010051883501906108096107ed6101e084358452868501358785015260408501356040850152606080860135908501526080808601359085015260a06001600160a01b03610740828801611c8b565b16908501526001600160a01b0361075960c08701611c8b565b1660c08501526001600160a01b0361077360e08701611c8b565b1660e08501526101006001600160a01b0361078f828801611c8b565b16908501526101206001600160a01b036107aa828801611c8b565b16908501526101406107bd818701611c9f565b151590850152610160808601359085015261018090806107df8388018861281b565b929093870152850191611fe9565b6101a06107fc8186018661281b565b9185840390860152611fe9565b9161081a6101c0918281019061281b565b929091818503910152611fe9565b950192019201909161056f565b610840818387611d4f565b35906001600160a01b03821682036104cc576108b2600192610863838888611d4f565b3590604051917fa9059cbb0000000000000000000000000000000000000000000000000000000060208401526001600160a01b0360805116602484015260448301526044825261031e82611f7f565b016104f7565b60046040517ffc235960000000000000000000000000000000000000000000000000000000008152fd5b6108f3816101605161010051611d80565b906109048160e05161014051611d4f565b35916109168260c05161012051611d4f565b3592858310156111f95761092f8360051b860186611dc0565b90918592819661093e8661240e565b92602087013542116111c8576060870135159081156111bb575b81156111b2575b5080156111aa575b611180576001600160a01b036109806101208801611d5f565b16600052600560205260ff60406000205416158015611157575b61112d576109ab6101008701611d5f565b6001600160a01b03806109c16101208a01611d5f565b16911614611103576001600160a01b036109dd60a08801611d5f565b161580156110e6575b80156110c9575b80156110ad575b6110835760c086016001600160a01b03610a0d82611d5f565b1615159081611066575b5061103c5782600052600660205260406000205460408701351461101257610a426101408701611d73565b15610fd25750670de0b6b3a76400008702878104670de0b6b3a76400001488151715610f795784610a72916124fd565b670de0b6b3a76400006040870135818102918183041490151715610f7957610a9f906060880135906124fd565b10610fa8578160005260066020526040600020805490670de0b6b3a764000089048201809211610f79575560808501358015670de0b6b3a76400008904808302839004141715610f7957610b0490604087013590670de0b6b3a76400008a04026124fd565b826000526006602052604086013560406000205411610f4f57670de0b6b3a7640000809195049704925b610b706020610b3d3689612182565b604051809381927f95de97cc0000000000000000000000000000000000000000000000000000000083526004830161230b565b038173a7fd6eb9cc35c210107d1a918e35ac82bc59961c5af49081156104c057600091610f15575b5015610ead57610bfe916020916001600160a01b03610bb960a08a01611d5f565b16906040518095819482937f1626ba7e000000000000000000000000000000000000000000000000000000008452896004850152604060248501526044840191611fe9565b03915afa9081156104c057600091610e32575b507fffffffff000000000000000000000000000000000000000000000000000000007f1626ba7e00000000000000000000000000000000000000000000000000000000911603610e08575b6101808401610c6b8186611dc0565b9050610dc0575b506101a084016014610c848287611dc0565b90501015610d01575b505060019450610cc0906001600160a01b03610cac6101008601611d5f565b1690610cba60a08601611d5f565b916128a8565b80610cce575b505001610231565b6001600160a01b03610ce6610100610cfa9401611d5f565b16906001600160a01b0360045416916128a8565b3880610cc6565b6103df610d0e9186611dc0565b909192610d1a846127cd565b610d2660a08801611d5f565b91816000526006602052604060002054936001600160a01b0386163b156104cc5786946040519b8c9687967f1ad047d20000000000000000000000000000000000000000000000000000000088526004880196610d8297612796565b03916001600160a01b031691815a6000948591f19081156104c057600195610cc092610db1575b819250610c8d565b610dba90611f6b565b38610da9565b610dcd610dd39186611dc0565b90612028565b15610dde5738610c72565b60046040517fb6629c02000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b90506020813d602011610ea5575b81610e4d60209383611f9b565b810103126104cc57517fffffffff00000000000000000000000000000000000000000000000000000000811681036104cc577fffffffff00000000000000000000000000000000000000000000000000000000610c11565b3d9150610e40565b610ebf610ecd92610ec592369161212d565b836126cf565b919091612536565b6001600160a01b0380610ee260a08801611d5f565b1691160315610c5c5760046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b90506020813d602011610f47575b81610f3060209383611f9b565b810103126104cc57610f4190611fdc565b38610b98565b3d9150610f23565b60046040517f17015bc1000000000000000000000000000000000000000000000000000000008152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60046040517fa0de07d3000000000000000000000000000000000000000000000000000000008152fd5b935091955082606085013511610fa857604084013591670de0b6b3a764000060808601359483600052600660205260408701356040600020550496610b2e565b60046040517fca92fdbb000000000000000000000000000000000000000000000000000000008152fd5b60046040517fd4dfdafe000000000000000000000000000000000000000000000000000000008152fd5b90506001600160a01b0361107a3392611d5f565b16141538610a17565b60046040517fd92e233d000000000000000000000000000000000000000000000000000000008152fd5b506001600160a01b036110c260e08801611d5f565b16156109f4565b506001600160a01b036110df6101008801611d5f565b16156109ed565b506001600160a01b036110fc6101208801611d5f565b16156109e6565b60046040517fdd807227000000000000000000000000000000000000000000000000000000008152fd5b60046040517ff84835a0000000000000000000000000000000000000000000000000000000008152fd5b506001600160a01b0361116d6101008801611d5f565b1660005260ff604060002054161561099a565b60046040517f1f2a2005000000000000000000000000000000000000000000000000000000008152fd5b508015610967565b9050153861095f565b6040880135159150610958565b602484604051907f2e775cae0000000000000000000000000000000000000000000000000000000082526004820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b508160c051141561022a565b5060c05160e0511415610223565b60046040517f521299a9000000000000000000000000000000000000000000000000000000008152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b60246040517fc0ae66ad000000000000000000000000000000000000000000000000000000008152336004820152fd5b346104cc5760206003193601126104cc57611313611c75565b61131b611cdd565b6001600160a01b0380911690817fffffffffffffffffffffffff00000000000000000000000000000000000000006002541617600255600154167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700600080a3005b346104cc5760006003193601126104cc5760206001600160a01b0360025416604051908152f35b346104cc5760206003193601126104cc5760043560005260066020526020604060002054604051908152f35b346104cc5760006003193601126104cc5760206001600160a01b0360045416604051908152f35b346104cc5760006003193601126104cc576020604051670de0b6b3a76400008152f35b346104cc5760206003193601126104cc576001600160a01b0361143a611c75565b166000526005602052602060ff604060002054166040519015158152f35b346104cc5760206003193601126104cc576004356001600160a01b038082168092036104cc57611486611cdd565b8115611083576003549081169082821461150057604080516001600160a01b03938416815292841660208401527fffffffffffffffffffffffff0000000000000000000000000000000000000000927f1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc9190a11617600355005b60046040517fea0f8928000000000000000000000000000000000000000000000000000000008152fd5b346104cc5760206003193601126104cc57611543611c75565b61154b611cdd565b6001600160a01b0390818116918215611083576004549081168381146115d257604080516001600160a01b0392831681529390911660208401527fffffffffffffffffffffffff0000000000000000000000000000000000000000927f649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed09190a11617600455005b60046040517fa133328a000000000000000000000000000000000000000000000000000000008152fd5b346104cc5760006003193601126104cc5760206001600160a01b0360015416604051908152f35b346104cc5760006003193601126104cc576002546001600160a01b0333818316036116a5577fffffffffffffffffffffffff00000000000000000000000000000000000000008092166002556001549133908316176001553391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152fd5b346104cc5760006003193601126104cc57611742611cdd565b60006001600160a01b037fffffffffffffffffffffffff00000000000000000000000000000000000000008060025416600255600154908116600155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346104cc5760406003193601126104cc5767ffffffffffffffff6004358181116104cc576117d7903690600401611cac565b916024359081116104cc576117f0903690600401611cac565b6117f8611cdd565b8315611242578084036108b85760005b84811061181157005b6001600160a01b03908161182e611829838989611d4f565b611d5f565b1615611083576001917f49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e27441761186b611866848789611d4f565b611d73565b8261187a611829868c8c611d4f565b166000526118bd6020916005835260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b6118cb611829858b8b611d4f565b926118da61186686898b611d4f565b9360405194151585521692a201611808565b346104cc5760206003193601126104cc576001600160a01b0361190d611c75565b166000526007602052602060ff604060002054166040519015158152f35b346104cc5760606003193601126104cc57611944611c75565b604435906001600160a01b03908183168093036104cc57611963611cdd565b1690811580156119bc575b611083576119ba91604051917fa9059cbb000000000000000000000000000000000000000000000000000000006020840152602483015260243560448301526044825261031e82611f7f565b005b50801561196e565b346104cc576119d236611c14565b6119de60a08201611d5f565b6001600160a01b0333911603611a55576119f78161240e565b80600052600660205260408060002054920135918281146110125760407f87b5f0afdc3a118b68246141c5bd338672ab3e901be636e27116238d284de6ac918151908482526020820152a16000526006602052604060002055600080f35b60046040517f4ca88867000000000000000000000000000000000000000000000000000000008152fd5b346104cc5760006003193601126104cc5760206001600160a01b0360035416604051908152f35b346104cc5760006003193601126104cc576020611ac1611e11565b604051908152f35b346104cc5760406003193601126104cc57611ae2611c75565b60243590811515908183036104cc576001600160a01b0390611b02611cdd565b16918215611083578260005260076020528160ff60406000205416151514611b92577fcba86444cdc912f5fa5f53c20361b3517933eb181876b3f4a0d47478c6a3039b91611b89602092856000526007845260406000209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b604051908152a2005b60046040517f5b2625c0000000000000000000000000000000000000000000000000000000008152fd5b346104cc5760206003193601126104cc5760043567ffffffffffffffff81116104cc57611bf2610dcd6020923690600401611c47565b6040519015158152f35b346104cc576020611ac1611c0f36611c14565b61240e565b600319906020828201126104cc576004359167ffffffffffffffff83116104cc57826101e0920301126104cc5760040190565b9181601f840112156104cc5782359167ffffffffffffffff83116104cc57602083818601950101116104cc57565b600435906001600160a01b03821682036104cc57565b35906001600160a01b03821682036104cc57565b359081151582036104cc57565b9181601f840112156104cc5782359167ffffffffffffffff83116104cc576020808501948460051b0101116104cc57565b6001600160a01b03600154163303611cf157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b91908110156111f95760051b0190565b356001600160a01b03811681036104cc5790565b3580151581036104cc5790565b91908110156111f95760051b810135907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe21813603018212156104cc570190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156104cc570180359067ffffffffffffffff82116104cc576020019181360383136104cc57565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016301480611f42575b15611e6c577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f000000000000000000000000000000000000000000000000000000000000000082527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117611f135760405251902090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b507f00000000000000000000000000000000000000000000000000000000000000004614611e43565b67ffffffffffffffff8111611f1357604052565b6080810190811067ffffffffffffffff821117611f1357604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611f1357604052565b519081151582036104cc57565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b90612080906001600160a01b036003541692604093849283518095819482937f3d303c920000000000000000000000000000000000000000000000000000000084528560048501528760248501526044840191611fe9565b03915afa9081156120e85760009283926120a8575b5050816120a0575090565b600191501490565b9080939250813d83116120e1575b6120c08183611f9b565b810103126120de575060206120d482611fdc565b9101513880612095565b80fd5b503d6120b6565b82513d6000823e3d90fd5b67ffffffffffffffff8111611f1357601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192612139826120f3565b916121476040519384611f9b565b8294818452818301116104cc578281602093846000960137010152565b9080601f830112156104cc5781602061217f9335910161212d565b90565b9190916101e09081818503126104cc576040519182019067ffffffffffffffff9183811083821117611f1357604052829481358452602082013560208501526040820135604085015260608201356060850152608082013560808501526121eb60a08301611c8b565b60a08501526121fc60c08301611c8b565b60c085015261220d60e08301611c8b565b60e0850152610100612220818401611c8b565b90850152610120612232818401611c8b565b90850152610140612244818401611c9f565b908501526101608083013590850152610180808301358481116104cc578261226d918501612164565b908501526101a0808301358481116104cc578261228b918501612164565b908501526101c092838301359081116104cc576122a89201612164565b910152565b919082519283825260005b8481106122f75750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006020809697860101520116010190565b6020818301810151848301820152016122b8565b9061217f916020815281516020820152602082015160408201526040820151606082015260608201516080820152608082015160a082015260a08201516001600160a01b0380911660c08301528060c08401511660e083015260e0830151816101009116818401528301518161012091168184015283015190610140911681830152820151610160901515818301528201516101809081830152820151906101e06123c36101a09382858501526102008401906122ad565b928401516123fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0946101c0928686830301848701526122ad565b94015192828503019101526122ad565b602061241e612451923690612182565b604051809381927fc3c1f2ec0000000000000000000000000000000000000000000000000000000083526004830161230b565b038173a7fd6eb9cc35c210107d1a918e35ac82bc59961c5af49081156104c0576000916124cc575b50612482611e11565b906040519060208201927f1901000000000000000000000000000000000000000000000000000000000000845260228301526042820152604281526124c681611f7f565b51902090565b906020823d82116124f5575b816124e560209383611f9b565b810103126120de57505138612479565b3d91506124d8565b8115612507570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60058110156126a057806125475750565b600181036125ad5760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152fd5b600281036126135760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152fd5b60031461261c57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9060418151146000146126fd576126f9916020820151906060604084015193015160001a90612707565b9091565b5050600090600290565b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831161278a5791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa1561277d5781516001600160a01b03811615612777579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b926001600160a01b0361217f98969360c0969386521660208501526040840152606083015260808201528160a08201520191611fe9565b6001600160a01b0316308114908115612812575b506127e857565b60046040517f8a5039c1000000000000000000000000000000000000000000000000000000008152fd5b905015386127e1565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156104cc57016020813591019167ffffffffffffffff82116104cc5781360383136104cc57565b90918281527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83116104cc5760209260051b809284830137010190565b91906001600160a01b03604051927f23b872dd00000000000000000000000000000000000000000000000000000000602085015216602483015230604483015260648201526064815260a081019181831067ffffffffffffffff841117611f135761291592604052612917565b565b6001600160a01b031690604051604081019080821067ffffffffffffffff831117611f13576129a8916040526020938482527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564858301526000808587829751910182855af13d15612a5f573d9161298d836120f3565b9261299b6040519485611f9b565b83523d868885013e612a63565b908151806129b7575b50505050565b828491810103126120de5750816129ce9101611fdc565b156129db578080806129b1565b608490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b6060915b91929015612ade5750815115612a77575090565b3b15612a805790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b825190915015612af15750805190602001fd5b612b2f906040519182917f08c379a00000000000000000000000000000000000000000000000000000000083526020600484015260248301906122ad565b0390fd5b9160148210612b6b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec6014843560601c9401920190565b60046040517fef356d7a000000000000000000000000000000000000000000000000000000008152fdfea26469706673582212202359e3ddbb19d82e21a3ac6f2af2942cb384f157a832b656ef265ddfd1e9389064736f6c6343000815003300000000000000000000000074ea4485aac8a7b26bf335bb8ed2748e9c0eaafa0000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8", + "nonce": "0x2100" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x83f6e9a185aeaaa717abe96e5db03da011e80aed3f762a44df785244538ff163", + "transactionType": "CALL", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "function": "manageOperatorPrivilege(address,bool)", + "arguments": [ + "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "true" + ], + "transaction": { + "type": "0x00", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "to": "0xf0ef43a073ee30239a1ecc84e1dadc8895dbc1c2", + "gas": "0x111af", + "value": "0x0", + "data": "0x2024cbc10000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b80000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x2101" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionType": "CALL", + "contractName": "AdvancedOrderEngine", + "contractAddress": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "function": "updateTokenWhitelist(address[],bool[])", + "arguments": [ + "[0x057e8e2bC40ECff87e6F9b28750D5E7AC004Eab9, 0x3cf2c147d43C98Fa96d267572e3FD44A4D3940d4, 0x4B6b9B31c72836806B0B1104Cf1CdAB8A0E3BD66, 0x9Ee1Aa18F3FEB435f811d6AE2F71B7D2a4Adce0B, 0x124ABC63F20c6e2088078bd61e2Db100Ff30836e, 0xecf6Bdde77C77863Ae842b145f9ab296E5eAcAF9, 0x8bA5b0452b0a4da211579AA2e105c3da7C0Ad36c, 0x8488c316e23504B8554e4BdE9651802CD45aea24, 0xeDc98fc6240671dF8e7eD035CE39143320c1A174, 0xeEf8e3c318fb3d86489FB258847d028adC629e14, 0x54390D6FD8C4d4e77c13Ac1E051C9A06eC19112f, 0xA4CBbd0f503720a0cA3C950D647A8c23FBE9702B, 0xab16485D5fC7140b01440C4a1dE5007e9321DB5F, 0x46624eA6a260714df1E1EF4c13575Bc7AAdf0f0e]", + "[true, true, true, true, true, true, true, true, true, true, true, true, true, true]" + ], + "transaction": { + "type": "0x00", + "from": "0x5adaf849e40b5b1303507299d3d06a4663d3a8b8", + "to": "0xf0ef43a073ee30239a1ecc84e1dadc8895dbc1c2", + "gas": "0x85541", + "value": "0x0", + "data": "0x6fda538f00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000220000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000057e8e2bc40ecff87e6f9b28750d5e7ac004eab90000000000000000000000003cf2c147d43c98fa96d267572e3fd44a4d3940d40000000000000000000000004b6b9b31c72836806b0b1104cf1cdab8a0e3bd660000000000000000000000009ee1aa18f3feb435f811d6ae2f71b7d2a4adce0b000000000000000000000000124abc63f20c6e2088078bd61e2db100ff30836e000000000000000000000000ecf6bdde77c77863ae842b145f9ab296e5eacaf90000000000000000000000008ba5b0452b0a4da211579aa2e105c3da7c0ad36c0000000000000000000000008488c316e23504b8554e4bde9651802cd45aea24000000000000000000000000edc98fc6240671df8e7ed035ce39143320c1a174000000000000000000000000eef8e3c318fb3d86489fb258847d028adc629e1400000000000000000000000054390d6fd8c4d4e77c13ac1e051c9a06ec19112f000000000000000000000000a4cbbd0f503720a0ca3c950d647a8c23fbe9702b000000000000000000000000ab16485d5fc7140b01440c4a1de5007e9321db5f00000000000000000000000046624ea6a260714df1e1ef4c13575bc7aadf0f0e000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x2102" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "transactionHash": "0x47204932eb7cfa411e90b3f2e9ac0186815b87a053f2f1e71487f71b14bcffab", + "transactionIndex": "0x0", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": null, + "cumulativeGasUsed": "0xa6069", + "gasUsed": "0xa6069", + "contractAddress": "0xA7FD6EB9cc35c210107d1A918e35ac82BC59961c", + "logs": [], + "status": "0x1", + "root": "0x7b2d1e6d6956afc3352a3cf385d0a5ccc29033b5a67753aae694bcce792fbf25", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0" + }, + { + "transactionHash": "0x0a7cc97780c5f2db2ca4920804f9db50c1c85e841ecf9893669f1679cea3d6df", + "transactionIndex": "0x1", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": null, + "cumulativeGasUsed": "0x48360", + "gasUsed": "0x48360", + "contractAddress": "0x74ea4485AaC8A7B26BF335BB8Ed2748E9C0EaAfA", + "logs": [], + "status": "0x1", + "root": "0x4b55fbe494e060b272557e969ccaca8bd4f388c8db16ff3ba685d8c919c21af1", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0" + }, + { + "transactionHash": "0x7e9f54da0392ef9990cefe21b969c92a5941a40af522abd2208653f7a0054c51", + "transactionIndex": "0x2", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": null, + "cumulativeGasUsed": "0x27183a", + "gasUsed": "0x27183a", + "contractAddress": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "logs": [ + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8" + ], + "data": "0x", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0x7e9f54da0392ef9990cefe21b969c92a5941a40af522abd2208653f7a0054c51", + "transactionIndex": "0x2", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x649c5e3d0ed183894196148e193af316452b0037e77d2ff0fef23b7dc722bed0" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0x7e9f54da0392ef9990cefe21b969c92a5941a40af522abd2208653f7a0054c51", + "transactionIndex": "0x2", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x1e74c2f263d77986cb475d9e4dedb38bba660cbe031e1f350a2a510e774f5fcc" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0x7e9f54da0392ef9990cefe21b969c92a5941a40af522abd2208653f7a0054c51", + "transactionIndex": "0x2", + "logIndex": "0x2", + "removed": false + } + ], + "status": "0x1", + "root": "0xbec266d3d1354fc5fa1952f26471c1644bd2b945bbdda31708f7ddf9f0655872", + "logsBloom": "0x00020000000000000000000000800000000000000010000000800000080000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000001000000000000000000000000000000000000020000000000000004000800000800000000000000000000000000400000000000000000000000000000000000001000080000000000000000000000000000000000000000000000000000000000002000000000000000000000400000400000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0" + }, + { + "transactionHash": "0x83f6e9a185aeaaa717abe96e5db03da011e80aed3f762a44df785244538ff163", + "transactionIndex": "0x3", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "cumulativeGasUsed": "0xbb23", + "gasUsed": "0xbb23", + "contractAddress": "0x0000000000000000000000000000000000000000", + "logs": [ + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0xcba86444cdc912f5fa5f53c20361b3517933eb181876b3f4a0d47478c6a3039b", + "0x0000000000000000000000005adaf849e40b5b1303507299d3d06a4663d3a8b8" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0x83f6e9a185aeaaa717abe96e5db03da011e80aed3f762a44df785244538ff163", + "transactionIndex": "0x3", + "logIndex": "0x3", + "removed": false + } + ], + "status": "0x1", + "root": "0x86db390e70e6496624f67ea3219f32e202ae18d0439cb94db008769f17bd0753", + "logsBloom": "0x00080000000000000000000000800000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000100000000000000000000002000000000000000000000400000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0" + }, + { + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "from": "0x5adaf849e40B5b1303507299D3d06a4663D3A8b8", + "to": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "cumulativeGasUsed": "0x5b2a3", + "gasUsed": "0x5b2a3", + "contractAddress": "0x0000000000000000000000000000000000000000", + "logs": [ + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000057e8e2bc40ecff87e6f9b28750d5e7ac004eab9" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0x4", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000003cf2c147d43c98fa96d267572e3fd44a4d3940d4" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0x5", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000004b6b9b31c72836806b0b1104cf1cdab8a0e3bd66" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0x6", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000009ee1aa18f3feb435f811d6ae2f71b7d2a4adce0b" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0x7", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000124abc63f20c6e2088078bd61e2db100ff30836e" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0x8", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000ecf6bdde77c77863ae842b145f9ab296e5eacaf9" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0x9", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000008ba5b0452b0a4da211579aa2e105c3da7c0ad36c" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0xa", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x0000000000000000000000008488c316e23504b8554e4bde9651802cd45aea24" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0xb", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000edc98fc6240671df8e7ed035ce39143320c1a174" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0xc", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000eef8e3c318fb3d86489fb258847d028adc629e14" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0xd", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x00000000000000000000000054390d6fd8c4d4e77c13ac1e051c9a06ec19112f" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0xe", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000a4cbbd0f503720a0ca3c950d647a8c23fbe9702b" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0xf", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x000000000000000000000000ab16485d5fc7140b01440c4a1de5007e9321db5f" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0x10", + "removed": false + }, + { + "address": "0xF0ef43a073EE30239a1eCC84e1DAdc8895DBc1C2", + "topics": [ + "0x49081ac6f68c0541ea8f82b948be21b0f16d1d550ad509a8324fec504e274417", + "0x00000000000000000000000046624ea6a260714df1e1ef4c13575bc7aadf0f0e" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xbc7f8ae9f9d335cb30913de382f2a64ebcf1e6fe59b54d8ba5b567183df036d5", + "blockNumber": "0x45fda54", + "transactionHash": "0xeb21683cc449d64ac89756642c4440dd60d392302a5a0ec102b068399632f232", + "transactionIndex": "0x4", + "logIndex": "0x11", + "removed": false + } + ], + "status": "0x1", + "root": "0xd8862b265a22fc3330dd23af04316ea46049e36a36cffac3481727e4d2b9dcb1", + "logsBloom": "0x00000002120000000002000000000000000000100000000400000000000000000000000000001000000008000000000000000020000000000008000000000000000000000000000000110080000010000000000000000000000000000800000042000020000001000010020004000000080000000000000000000000000200002001000800000000020002000000100000000000000000000000000000040000000000000080000020000000000000000000802000080000000800000000400000008000000000400004040002000001000000000000000800000000800000000000000000000000000000000000000800000000000000002000000000000000", + "type": "0x0" + } + ], + "libraries": [ + "src/libraries/OrderEngine.sol:OrderEngine:0xa7fd6eb9cc35c210107d1a918e35ac82bc59961c" + ], + "pending": [], + "returns": {}, + "timestamp": 1710343345, + "chain": 1891, + "multi": false, + "commit": "fbc8dfb" +} \ No newline at end of file diff --git a/script/deployFacilitatorSwapContract.s.sol b/script/deployFacilitatorSwapContract.s.sol new file mode 100644 index 0000000..0a70978 --- /dev/null +++ b/script/deployFacilitatorSwapContract.s.sol @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +import "forge-std/Script.sol"; +import "../src/Mocks/FacilitatorSwap.sol"; + +contract DeployScript is Script { + function run() external { + FacilitatorSwap facilitatorSwap; + + uint256 ownerPrivateKey = vm.envUint("PRIVATE_KEY"); + // address owner = vm.addr(ownerPrivateKey); + + vm.startBroadcast(ownerPrivateKey); + + facilitatorSwap = new FacilitatorSwap(); + + vm.stopBroadcast(); + + } +} \ No newline at end of file diff --git a/script/deployOrderEngine.s.sol b/script/deployOrderEngine.s.sol new file mode 100644 index 0000000..81d90d0 --- /dev/null +++ b/script/deployOrderEngine.s.sol @@ -0,0 +1,62 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +import "forge-std/Script.sol"; +import "../src/AdvancedOrderEngine.sol"; +import "../src/Predicates.sol"; + +contract DeployScript is Script { + function run() external { + AdvancedOrderEngine advancedOrderEngine; + Predicates predicates; + + uint256 ownerPrivateKey = vm.envUint("PRIVATE_KEY"); + address owner = vm.addr(ownerPrivateKey); + + vm.startBroadcast(ownerPrivateKey); + + predicates = new Predicates(); + advancedOrderEngine = new AdvancedOrderEngine(IPredicates(address(predicates)), owner); + + advancedOrderEngine.manageOperatorPrivilege(owner, true); + + address[] memory tokens = new address[](14); + bool[] memory access = new bool[](14); + + tokens[0] = 0x057e8e2bC40ECff87e6F9b28750D5E7AC004Eab9; // usdt + tokens[1] = 0x3cf2c147d43C98Fa96d267572e3FD44A4D3940d4; // usdc + tokens[2] = 0x4B6b9B31c72836806B0B1104Cf1CdAB8A0E3BD66; // dai + tokens[3] = 0x9Ee1Aa18F3FEB435f811d6AE2F71B7D2a4Adce0B; // wbtc + tokens[4] = 0x124ABC63F20c6e2088078bd61e2Db100Ff30836e; // arb + tokens[5] = 0xecf6Bdde77C77863Ae842b145f9ab296E5eAcAF9; // op + tokens[6] = 0x8bA5b0452b0a4da211579AA2e105c3da7C0Ad36c; // matic + tokens[7] = 0x8488c316e23504B8554e4BdE9651802CD45aea24; // uni + tokens[8] = 0xeDc98fc6240671dF8e7eD035CE39143320c1A174; // link + tokens[9] = 0xeEf8e3c318fb3d86489FB258847d028adC629e14; // kub + tokens[10] = 0x54390D6FD8C4d4e77c13Ac1E051C9A06eC19112f; // eth-lo + tokens[11] = 0xA4CBbd0f503720a0cA3C950D647A8c23FBE9702B; // usdt-lo + tokens[12] = 0xab16485D5fC7140b01440C4a1dE5007e9321DB5F; // bnb-lo + tokens[13] = 0x46624eA6a260714df1E1EF4c13575Bc7AAdf0f0e; // linl-lo + + // Whitelisting tokens + access[0] = true; + access[1] = true; + access[2] = true; + access[3] = true; + access[4] = true; + access[5] = true; + access[6] = true; + access[7] = true; + access[8] = true; + access[9] = true; + access[10] = true; + access[11] = true; + access[12] = true; + access[13] = true; + + advancedOrderEngine.updateTokenWhitelist(tokens, access); + + vm.stopBroadcast(); + + } +} \ No newline at end of file diff --git a/script/transactionOrder.s.sol b/script/transactionOrder.s.sol new file mode 100644 index 0000000..e141767 --- /dev/null +++ b/script/transactionOrder.s.sol @@ -0,0 +1,127 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +import "forge-std/Script.sol"; +import "../src/AdvancedOrderEngine.sol"; +import "../src/Predicates.sol"; + +contract TransactionScript is Script { + Predicates predicates = Predicates(0xF290FF9ED61cB43F96D3F374474f05810d505430); + AdvancedOrderEngine advancedOrderEngine = AdvancedOrderEngine(0xDaC771732B2211e2d2c691DC95f9Cf75A61a5974); + uint256 ownerPrivateKey = vm.envUint("LIVE_MAKER1"); + address owner = vm.addr(ownerPrivateKey); + uint256 maker1PrivateKey = vm.envUint("LIVE_MAKER1"); + address maker1 = vm.addr(maker1PrivateKey); + uint256 maker2PrivateKey = vm.envUint("LIVE_MAKER2"); + address maker2 = vm.addr(maker2PrivateKey); + IERC20 usdc = IERC20(0x3cf2c147d43C98Fa96d267572e3FD44A4D3940d4); + IERC20 wmatic = IERC20(0x8bA5b0452b0a4da211579AA2e105c3da7C0Ad36c); + + function run() external { + + // vm.startBroadcast(maker1PrivateKey); + + // usdc.approve(address(advancedOrderEngine), UINT256_MAX); + + // vm.stopBroadcast(); + + // vm.startBroadcast(maker2PrivateKey); + + // wmatic.approve(address(advancedOrderEngine), UINT256_MAX); + + // vm.stopBroadcast(); + + vm.startBroadcast(ownerPrivateKey); + + OrderEngine.Order memory buyOrder = getDummyBuyOrder(); + OrderEngine.Order memory sellOrder = getDummySellOrder(); + OrderEngine.Order[] memory orders = new OrderEngine.Order[](2); + + orders[0] = sellOrder; + orders[1] = buyOrder; + + uint256[] memory sell = new uint256[](2); + + sell[0] = sellOrder.sellTokenAmount * 1e18; + sell[1] = buyOrder.sellTokenAmount * 1e18; + + uint256[] memory buy = new uint256[](2); + + buy[0] = sellOrder.buyTokenAmount * 1e18; + buy[1] = buyOrder.buyTokenAmount * 1e18; + + bytes[] memory sigs = new bytes[](2); + + (uint8 v, bytes32 r, bytes32 s) = vm.sign(maker2PrivateKey, _hashTypedDataV4(OrderEngine.hash(sellOrder))); + bytes memory sellOrderSignature = abi.encodePacked(r, s, v); + + console2.logBytes32(_hashTypedDataV4(OrderEngine.hash(sellOrder))); + + (v, r, s) = vm.sign(maker1PrivateKey, _hashTypedDataV4(OrderEngine.hash(buyOrder))); + bytes memory buyOrderSignature = abi.encodePacked(r, s, v); + console2.logBytes32(_hashTypedDataV4(OrderEngine.hash(buyOrder))); + + sigs[0] = sellOrderSignature; + sigs[1] = buyOrderSignature; + + uint256[] memory emptyArray2 = new uint256[](0); + IERC20[] memory emptyArray1 = new IERC20[](0); + + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + sigs, + '0x', + emptyArray1, + emptyArray2 + ); + + vm.stopBroadcast(); + + } + + function getDummyBuyOrder() private view returns(OrderEngine.Order memory) { + return OrderEngine.Order( + 1, + 1700948778, + 10000000, + 4800000000000000, + 0, + maker1, + owner, + maker1, + address(usdc), + address(wmatic), + true, + 0x0000000000000000000000000000000000000000000000000000000000000000, + "", + '0x', + '0x' + ); + } + + function getDummySellOrder() private view returns(OrderEngine.Order memory) { + return OrderEngine.Order( + 2, + 1700948778, + 4800000000000000, + 10000000, + 0, + maker2, + owner, + maker2, + address(wmatic), + address(usdc), + true, + 0x0000000000000000000000000000000000000000000000000000000000000000, + '', + '0x', + '0x' + ); + } + + function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) { + return ECDSA.toTypedDataHash(advancedOrderEngine.DOMAIN_SEPARATOR(), structHash); + } +} \ No newline at end of file diff --git a/slither-output.txt b/slither-output.txt new file mode 100644 index 0000000..4006279 --- /dev/null +++ b/slither-output.txt @@ -0,0 +1 @@ +Test output diff --git a/src/AdvancedOrderEngine.sol b/src/AdvancedOrderEngine.sol index fe1c886..8a7ae1c 100644 --- a/src/AdvancedOrderEngine.sol +++ b/src/AdvancedOrderEngine.sol @@ -33,6 +33,12 @@ contract AdvancedOrderEngine is ReentrancyGuard, Vault, Ownable2Step, EIP712 { // Used for precision in calculations. uint256 public constant ONE = 1e18; + // Used for precision in calculations. + uint256 public constant MAX_BPS = 10000; + + // minimum fee required + uint256 public minimumFee; + // EIP-712 domain name used for computing the domain separator. string private constant _NAME = "Elektrik Limit Order Protocol"; @@ -46,7 +52,7 @@ contract AdvancedOrderEngine is ReentrancyGuard, Vault, Ownable2Step, EIP712 { address public feeCollector; // Stores the whitelist status of each token. - mapping(IERC20 => bool) public isWhitelistedToken; + mapping(address => bool) public isWhitelistedToken; // Tracks the amount of tokens sold for each order using the order hash. mapping(bytes32 => uint256) public filledSellAmount; @@ -58,13 +64,17 @@ contract AdvancedOrderEngine is ReentrancyGuard, Vault, Ownable2Step, EIP712 { EVENTS //////////////////////////////////////////////////////////////*/ - event OrderFill(bytes32 orderHash, uint256 filledSellAmount); + event OrderFill(bytes32 orderHash, uint256 filledSellAmount, uint executedSellAmount, uint256 executedBuyAmount, address indexed sellToken, address indexed buyToken, uint256 nonce, uint256 executedFee); event OperatorAccessModified(address indexed authorized, bool access); event OrderCanceled(bytes32 orderHash, uint256 filledSellAmount); event FeeCollectorChanged( address oldFeeCollectorAddr, address newFeeCollectorAddr ); + event MinimumFeeChanged( + uint256 oldMinFee, + uint256 newMinFee + ); event PredicatesChanged( address oldPredicatesAddr, address newPredicatesAddr @@ -92,7 +102,7 @@ contract AdvancedOrderEngine is ReentrancyGuard, Vault, Ownable2Step, EIP712 { revert ZeroAddress(); } - feeCollectorAddr = feeCollectorAddr; + feeCollector = feeCollectorAddr; predicates = predicatesAddr; emit FeeCollectorChanged(address(0), feeCollectorAddr); @@ -150,7 +160,7 @@ contract AdvancedOrderEngine is ReentrancyGuard, Vault, Ownable2Step, EIP712 { * @param access Array of boolean values indicating whether to whitelist (true) a token or remove from whitelist (false). */ function updateTokenWhitelist( - IERC20[] calldata tokens, + address[] calldata tokens, bool[] calldata access ) external onlyOwner { /** @@ -170,22 +180,22 @@ contract AdvancedOrderEngine is ReentrancyGuard, Vault, Ownable2Step, EIP712 { for (uint256 i; i < tokens.length; ) { // Revert if the token address is a zero address. - if (address(tokens[i]) == address(0)) { + if (tokens[i] == address(0)) { revert ZeroAddress(); } - // Revert if the access status remains unchanged. - if (isWhitelistedToken[tokens[i]] == access[i]) { - revert AccessStatusUnchanged(); - } + // // Revert if the access status remains unchanged. + // if (isWhitelistedToken[tokens[i]] == access[i]) { + // revert AccessStatusUnchanged(); + // } isWhitelistedToken[tokens[i]] = access[i]; + emit WhitelistStatusUpdated(tokens[i], access[i]); + unchecked { ++i; } - - emit WhitelistStatusUpdated(address(tokens[i]), access[i]); } } @@ -244,6 +254,44 @@ contract AdvancedOrderEngine is ReentrancyGuard, Vault, Ownable2Step, EIP712 { feeCollector = newFeeCollectorAddr; } + /** + * @notice Set the minimum fee required on orders + * @dev Only callable by the owner. Initially set to zero. + * @param _fee The min fee + */ + function setMinimumFee( + uint _fee + ) external onlyOwner { + if(_fee > 2000) revert ExceedsTwentyPercent(); + // Local copy to save gas. + uint256 currentMinFee = minimumFee; + + emit MinimumFeeChanged(currentMinFee, _fee); + + minimumFee = _fee; + } + + /** + * @notice collect leftover tokens. + * @dev Only callable by the owner. + * @param token token's contract address + * @param amount amount you want to transfer + * @param to address you want to transfer funds to + */ + function withdraw ( + address token, + uint amount, + address to + ) external onlyOwner { + // Revert if the token address or the to address is a zero address. + if (token == address(0) || to == address(0)) { + revert ZeroAddress(); + } + + _sendAsset(IERC20(token), amount, to); + + } + /*////////////////////////////////////////////////////////////// ORDER PROCESSING FUNCTIONS //////////////////////////////////////////////////////////////*/ @@ -258,6 +306,7 @@ contract AdvancedOrderEngine is ReentrancyGuard, Vault, Ownable2Step, EIP712 { * @param borrowedAmounts An array specifying the corresponding amounts of each token the facilitator wants to borrow. * @param signatures An array of signatures, each corresponding to an order, used for order validation. * @param facilitatorInteraction Calldata for the facilitator's interaction. + * @dev `executedSellAmounts` & `executedBuyAmounts` have to be scaled up to 1e36 for precision (i.e multiply by 1e18), we scale them down later. */ function fillOrders( OrderEngine.Order[] calldata orders, @@ -431,6 +480,10 @@ contract AdvancedOrderEngine is ReentrancyGuard, Vault, Ownable2Step, EIP712 { executedSellAmount, executedBuyAmount ); + + // scale down + executedBuyAmount = executedBuyAmount / ONE; + executedSellAmount = executedSellAmount / ONE; } // If the order is fill or kill. else { @@ -442,8 +495,15 @@ contract AdvancedOrderEngine is ReentrancyGuard, Vault, Ownable2Step, EIP712 { executedSellAmount = order.sellTokenAmount; executedFeeAmount = order.feeAmounts; + // Revert if order's limit price is not respected. + _validateFee(executedSellAmount, executedFeeAmount); + // Update the total filled sell amount for this order to match the order's original sell token amount. filledSellAmount[orderHash] = executedSellAmount; + + // scale down only buy amount because `executedSellAmount` is updated above + executedBuyAmount = executedBuyAmount / ONE; + } // Verifies the signature of an order.. @@ -464,10 +524,10 @@ contract AdvancedOrderEngine is ReentrancyGuard, Vault, Ownable2Step, EIP712 { ); // Receive sell tokens from the maker. - _receiveAsset(order.sellToken, executedSellAmount, order.maker); + _receiveAsset(IERC20(order.sellToken), executedSellAmount, order.maker, address(this)); // Receive fees from the maker to the fee collector address. - _receiveAsset(order.sellToken, executedFeeAmount, feeCollector); + if(executedFeeAmount != 0) { _receiveAsset(IERC20(order.sellToken), executedFeeAmount, order.maker, feeCollector); } } function _validateOrder( @@ -499,11 +559,18 @@ contract AdvancedOrderEngine is ReentrancyGuard, Vault, Ownable2Step, EIP712 { revert TokenNotWhitelisted(); } + // Revert if buy token and sell token are equal + if ( + order.sellToken == order.buyToken + ) { + revert SameBuyAndSellToken(); + } + // Revert if any address in the order is zero. if ( order.maker == address(0) || - address(order.buyToken) == address(0) || - address(order.sellToken) == address(0) || + order.buyToken == address(0) || + order.sellToken == address(0) || order.recipient == address(0) ) { revert ZeroAddress(); @@ -534,6 +601,9 @@ contract AdvancedOrderEngine is ReentrancyGuard, Vault, Ownable2Step, EIP712 { revert LimitPriceNotRespected(); } + // scale down + executedSellAmount = executedSellAmount / ONE; + // Update the total filled sell amount for this order. filledSellAmount[orderHash] += executedSellAmount; @@ -542,6 +612,9 @@ contract AdvancedOrderEngine is ReentrancyGuard, Vault, Ownable2Step, EIP712 { (order.feeAmounts * executedSellAmount) / order.sellTokenAmount; + // Revert if order's limit price is not respected. + _validateFee(executedSellAmount, executedFeeAmount); + // Revert if the total filled sell amount surpasses the order's original sell token amount. if (filledSellAmount[orderHash] > order.sellTokenAmount) { revert ExceedsOrderSellAmount(); @@ -573,6 +646,18 @@ contract AdvancedOrderEngine is ReentrancyGuard, Vault, Ownable2Step, EIP712 { } } + function _validateFee( + uint256 executedSellAmount, + uint256 executedFeeAmount + ) private view { + if ( + (executedSellAmount * minimumFee) / MAX_BPS > + executedFeeAmount + ) { + revert MinimumFeeNotRespected(); + } + } + function _executePreInteraction( OrderEngine.Order calldata order, bytes32 orderHash, @@ -668,8 +753,12 @@ contract AdvancedOrderEngine is ReentrancyGuard, Vault, Ownable2Step, EIP712 { ) private { bytes32 orderHash = getOrderHash(order); + // scale down + executedBuyAmount = executedBuyAmount / ONE; + executedSellAmount = executedSellAmount / ONE; + // Transfer the buy tokens to the recipient. - _sendAsset(order.buyToken, executedBuyAmount, order.recipient); + _sendAsset(IERC20(order.buyToken), executedBuyAmount, order.recipient); // Local copy to save gas. uint256 sellTokensFilled = filledSellAmount[orderHash]; @@ -684,7 +773,7 @@ contract AdvancedOrderEngine is ReentrancyGuard, Vault, Ownable2Step, EIP712 { ); // Emit an event to log the order fill. - emit OrderFill(orderHash, sellTokensFilled); + emit OrderFill(orderHash, sellTokensFilled, executedSellAmount, executedBuyAmount, order.sellToken, order.buyToken, order.nonce, order.feeAmounts); } function _executePostInteraction( diff --git a/src/AdvancedOrderEngineErrors.sol b/src/AdvancedOrderEngineErrors.sol index 6c18fa1..bb6dc54 100644 --- a/src/AdvancedOrderEngineErrors.sol +++ b/src/AdvancedOrderEngineErrors.sol @@ -9,6 +9,7 @@ error ZeroAddress(); error InvalidSignature(); error IncorrectDataLength(); error LimitPriceNotRespected(); +error MinimumFeeNotRespected(); error NotAnOperator(address caller); error PredicateIsNotTrue(); error ExceedsOrderSellAmount(); @@ -20,3 +21,5 @@ error InvalidInteractionTarget(); error AccessDenied(); error SameFeeCollectorAddress(); error TokenNotWhitelisted(); +error SameBuyAndSellToken(); +error ExceedsTwentyPercent(); \ No newline at end of file diff --git a/src/Helper/GenerateCalldata.sol b/src/Helper/GenerateCalldata.sol new file mode 100644 index 0000000..3a1fb7d --- /dev/null +++ b/src/Helper/GenerateCalldata.sol @@ -0,0 +1,334 @@ +// SPDX-License-Identifier: MIT + + +import "forge-std/Test.sol"; +import "forge-std/console.sol"; + +pragma solidity 0.8.21; + +contract GenerateCalldata { + address targetContract; + + constructor(address _targetContract) { + targetContract = _targetContract; + } + + function generateCalldata1() public view returns (bytes memory) { + // English: Only allow order execution if the return value from an arbitrary call is less than 15. + // Predicate: lt(15, arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress)) + + // Step 1: Generate calldata to send to our target contract + + bytes memory targetContractCalldata = abi.encodeWithSignature( + "dummyFn3()" + ); // 'callDataToSendToTargetAddress' + + // Step 2: Generate predicates contract "arbitrary static call" function calldata + bytes memory arbitraryStaticCalldata = abi.encodeWithSignature( + "arbitraryStaticCall(address,bytes)", + targetContract, + targetContractCalldata + ); // arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress) + + // Step 3: Generate predicates contract "lt" function calldata + bytes memory ltFnCalldata = abi.encodeWithSignature( + "lt(uint256,bytes)", + 15, + arbitraryStaticCalldata + ); // lt(15, arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress)) + return ltFnCalldata; + } + + function generateCalldata2() public view returns (bytes memory) { + // English: Allow order execution if the return value from an arbitrary call is either less than 15 or greater than 5. + // First, check if it's less than 15. If it isn't, then check if it's greater than 5. Allow order execution if either condition is true; disallow otherwise. + // Predicate: or(lt(15, arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress)), gt(5, arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress))) + // Note: It has 2 predicates, predicate#1 is 'lt' and predicate#2 is 'gt' + + // Step 1: Generate calldata to send to our target contract (for LT) + bytes memory targetContractCalldata = abi.encodeWithSignature( + "dummyFn()" + ); // 'callDataToSendToTargetAddress' + + // Step 2: Generate predicates contract "arbitrary static call" function calldata (for LT) + bytes memory arbitraryStaticCalldata = abi.encodeWithSignature( + "arbitraryStaticCall(address,bytes)", + targetContract, + targetContractCalldata + ); // arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress) + + // Step 3: Generate predicates contract "lt" function calldata + // 7 < 15 + bytes memory ltFnCalldata = abi.encodeWithSignature( + "lt(uint256,bytes)", + 15, + arbitraryStaticCalldata + ); // lt(15, arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress)) + + // Helpful in generating bytes offset (see below) + uint256 ltCalldataLength = bytes(ltFnCalldata).length; + console.log("LT Calldata length ", ltCalldataLength); + + // Step 4: Generate calldata to send to our target contract (for GT) + targetContractCalldata = abi.encodeWithSignature("dummyFn2()"); // 'callDataToSendToTargetAddress' + + // Step 5: Generate predicates contract "arbitrary static call" function calldata (for GT) + arbitraryStaticCalldata = abi.encodeWithSignature( + "arbitraryStaticCall(address,bytes)", + targetContract, + targetContractCalldata + ); // arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress) + + // Step 6: Generate predicates contract "gt" function calldata + // 18 > 5 + bytes memory gtFnCalldata = abi.encodeWithSignature( + "gt(uint256,bytes)", + 19, + arbitraryStaticCalldata + ); // lt(15, arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress)) + + // Helpful in generating bytes offset (see below) + uint256 gtCalldataLength = bytes(gtFnCalldata).length; + console.log("GT Calldata length ", gtCalldataLength); + + // Step 7: generate 'offset' param value of 'or' fn of predicates contract + + // Generationg offset, required by 'or' fn of predicates contract + // We have two predicates, length of both predicates in 260, so first predicate offset would be 260 and second would be "firstPredicateLength + 260 = 520" + bytes memory offsetBytes = abi.encodePacked(uint32(520), uint32(260)); + + // 'or' fn expects offset in uint256, so padding 0s + for (uint256 i = (32 - offsetBytes.length) / 4; i > 0; i--) { + offsetBytes = abi.encodePacked(uint32(0), offsetBytes); + } + uint256 offset = uint256(bytes32(offsetBytes)); + + // Step 8: combine both 'lt' and 'gt' predicates + bytes memory jointPredicates = abi.encodePacked( + bytes(ltFnCalldata), + bytes(gtFnCalldata) + ); + + // Step 9: Generating 'or' fn calldata + bytes memory orFnCalldata = abi.encodeWithSignature( + "and(uint256,bytes)", + offset, + jointPredicates + ); + return orFnCalldata; + } + + function generateCalldataAnd_lt_gt(uint256 value_1, uint256 target_value_1, uint256 value_2, uint256 target_value_2) public view returns (bytes memory) { + // English: Allow order execution if the return value from an arbitrary call is either less than 15 or greater than 5. + // First, check if it's less than 15. If it isn't, then check if it's greater than 10. Allow order execution if either condition is true; disallow otherwise. + // Predicate: and(lt(15, arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress)), gt(10, arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress))) + // Note: It has 2 predicates, predicate#1 is 'lt' and predicate#2 is 'gt' + + // Step 1: Generate calldata to send to our target contract (for LT) + bytes memory targetContractCalldata = abi.encodeWithSignature( + "dummyFn(uint256)", + target_value_1 + ); // 'callDataToSendToTargetAddress' + + // Step 2: Generate predicates contract "arbitrary static call" function calldata (for LT) + bytes memory arbitraryStaticCalldata = abi.encodeWithSignature( + "arbitraryStaticCall(address,bytes)", + targetContract, + targetContractCalldata + ); // arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress) + + // Step 3: Generate predicates contract "lt" function calldata + // 10 < 15 + bytes memory ltFnCalldata = abi.encodeWithSignature( + "lt(uint256,bytes)", + value_1, + arbitraryStaticCalldata + ); // lt(15, arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress)) + + // Helpful in generating bytes offset (see below) + uint256 ltCalldataLength = bytes(ltFnCalldata).length; + console.log("LT Calldata length ", ltCalldataLength); + + // Step 4: Generate calldata to send to our target contract (for GT) + targetContractCalldata = abi.encodeWithSignature( + "dummyFn(uint256)", + target_value_2 + ); // 'callDataToSendToTargetAddress' + + // Step 5: Generate predicates contract "arbitrary static call" function calldata (for GT) + arbitraryStaticCalldata = abi.encodeWithSignature( + "arbitraryStaticCall(address,bytes)", + targetContract, + targetContractCalldata + ); // arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress) + + // Step 6: Generate predicates contract "gt" function calldata + // 15 > 10 + bytes memory gtFnCalldata = abi.encodeWithSignature( + "gt(uint256,bytes)", + value_2, + arbitraryStaticCalldata + ); // lt(15, arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress)) + + // Helpful in generating bytes offset (see below) + uint256 gtCalldataLength = bytes(gtFnCalldata).length; + console.log("GT Calldata length ", gtCalldataLength); + + // Step 7: generate 'offset' param value of 'or' fn of predicates contract + + // Generationg offset, required by 'or' fn of predicates contract + // We have two predicates, length of both predicates in 260, so first predicate offset would be 260 and second would be "firstPredicateLength + 260 = 520" + bytes memory offsetBytes = abi.encodePacked(uint32(ltCalldataLength+gtCalldataLength), uint32(ltCalldataLength)); + + // 'or' fn expects offset in uint256, so padding 0s + for (uint256 i = (32 - offsetBytes.length) / 4; i > 0; i--) { + offsetBytes = abi.encodePacked(uint32(0), offsetBytes); + } + uint256 offset = uint256(bytes32(offsetBytes)); + + // Step 8: combine both 'lt' and 'gt' predicates + bytes memory jointPredicates = abi.encodePacked( + bytes(ltFnCalldata), + bytes(gtFnCalldata) + ); + + // Step 9: Generating 'or' fn calldata + bytes memory orFnCalldata = abi.encodeWithSignature( + "and(uint256,bytes)", + offset, + jointPredicates + ); + return orFnCalldata; + } + + function generateCalldataOr_lt_gt(uint256 value_1, uint256 target_value_1, uint256 value_2, uint256 target_value_2) public view returns (bytes memory) { + // English: Allow order execution if the return value from an arbitrary call is either less than 15 or greater than 5. + // First, check if it's less than 15. If it isn't, then check if it's greater than 10. Allow order execution if either condition is true; disallow otherwise. + // Predicate: and(lt(15, arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress)), gt(10, arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress))) + // Note: It has 2 predicates, predicate#1 is 'lt' and predicate#2 is 'gt' + + // Step 1: Generate calldata to send to our target contract (for LT) + bytes memory targetContractCalldata = abi.encodeWithSignature( + "dummyFn(uint256)", + target_value_1 + ); // 'callDataToSendToTargetAddress' + + // Step 2: Generate predicates contract "arbitrary static call" function calldata (for LT) + bytes memory arbitraryStaticCalldata = abi.encodeWithSignature( + "arbitraryStaticCall(address,bytes)", + targetContract, + targetContractCalldata + ); // arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress) + + // Step 3: Generate predicates contract "lt" function calldata + // 10 < 15 + bytes memory ltFnCalldata = abi.encodeWithSignature( + "lt(uint256,bytes)", + value_1, + arbitraryStaticCalldata + ); // lt(15, arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress)) + + // Helpful in generating bytes offset (see below) + uint256 ltCalldataLength = bytes(ltFnCalldata).length; + console.log("LT Calldata length ", ltCalldataLength); + + // Step 4: Generate calldata to send to our target contract (for GT) + targetContractCalldata = abi.encodeWithSignature( + "dummyFn(uint256)", + target_value_2 + ); // 'callDataToSendToTargetAddress' + + // Step 5: Generate predicates contract "arbitrary static call" function calldata (for GT) + arbitraryStaticCalldata = abi.encodeWithSignature( + "arbitraryStaticCall(address,bytes)", + targetContract, + targetContractCalldata + ); // arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress) + + // Step 6: Generate predicates contract "gt" function calldata + // 15 > 10 + bytes memory gtFnCalldata = abi.encodeWithSignature( + "gt(uint256,bytes)", + value_2, + arbitraryStaticCalldata + ); // lt(15, arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress)) + + // Helpful in generating bytes offset (see below) + uint256 gtCalldataLength = bytes(gtFnCalldata).length; + console.log("GT Calldata length ", gtCalldataLength); + + // Step 7: generate 'offset' param value of 'or' fn of predicates contract + + // Generationg offset, required by 'or' fn of predicates contract + // We have two predicates, length of both predicates in 260, so first predicate offset would be 260 and second would be "firstPredicateLength + 260 = 520" + bytes memory offsetBytes = abi.encodePacked(uint32(ltCalldataLength+gtCalldataLength), uint32(ltCalldataLength)); + + // 'or' fn expects offset in uint256, so padding 0s + for (uint256 i = (32 - offsetBytes.length) / 4; i > 0; i--) { + offsetBytes = abi.encodePacked(uint32(0), offsetBytes); + } + uint256 offset = uint256(bytes32(offsetBytes)); + + // Step 8: combine both 'lt' and 'gt' predicates + bytes memory jointPredicates = abi.encodePacked( + bytes(ltFnCalldata), + bytes(gtFnCalldata) + ); + + // Step 9: Generating 'or' fn calldata + bytes memory orFnCalldata = abi.encodeWithSignature( + "or(uint256,bytes)", + offset, + jointPredicates + ); + return orFnCalldata; + } + + function generateCalldataNot() public view returns (bytes memory) { + + bytes memory targetContractCalldata = abi.encodeWithSignature( + "dummyBool()" + ); // 'callDataToSendToTargetAddress' + bytes memory arbitraryStaticCalldata = abi.encodeWithSignature( + "arbitraryStaticCall(address,bytes)", + targetContract, + targetContractCalldata + ); // arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress) + bytes memory notFnCalldata = abi.encodeWithSignature( + "not(bytes)", + arbitraryStaticCalldata + ); + return notFnCalldata; + } + + function generateCalldatadynamic(string memory operation, uint256 x,uint256 y) public view returns (bytes memory) { + // English: Only allow order execution if the return value from an arbitrary call is less than 15. + // Predicate: lt(15, arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress)) + + // Step 1: Generate calldata to send to our target contract + + bytes memory targetContractCalldata = abi.encodeWithSignature( + "dummyFn(uint256)", + y + ); // 'callDataToSendToTargetAddress' + + // Step 2: Generate predicates contract "arbitrary static call" function calldata + bytes memory arbitraryStaticCalldata = abi.encodeWithSignature( + "arbitraryStaticCall(address,bytes)", + targetContract, + targetContractCalldata + ); // arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress) + + // Step 3: Generate predicates contract "lt" function calldata + + if (keccak256(bytes(operation)) == keccak256("lt")) { + return abi.encodeWithSignature("lt(uint256,bytes)", x, arbitraryStaticCalldata); + } else if (keccak256(bytes(operation)) == keccak256("gt")) { + return abi.encodeWithSignature("gt(uint256,bytes)", x, arbitraryStaticCalldata); + } else if (keccak256(bytes(operation)) == keccak256("eq")) { + return abi.encodeWithSignature("eq(uint256,bytes)", x, arbitraryStaticCalldata); + } else { + revert("Unsupported operation"); + } + } +} diff --git a/src/Helper/TargetContract.sol b/src/Helper/TargetContract.sol new file mode 100644 index 0000000..efd93bd --- /dev/null +++ b/src/Helper/TargetContract.sol @@ -0,0 +1,34 @@ +// SPDX-License-Identifier: MIT + +pragma solidity 0.8.21; + +import "forge-std/console.sol"; +import "forge-std/Test.sol"; +import "forge-std/StdCheats.sol"; +import "forge-std/Vm.sol"; + + +contract TargetContract { + + function dummyFn(uint256 x) public pure returns (uint256) { + return x; + } + + function dummyFn1() public pure returns (uint256) { + return 7; + } + + function dummyFn2() public pure returns (uint256) { + return 18; + } + + function dummyFn3() public pure returns (uint256) { + return 7; + } + + function dummyBool() public pure returns (bool){ + return false; + } + + +} diff --git a/src/Helper/VerifyPredicatesLogic.sol b/src/Helper/VerifyPredicatesLogic.sol new file mode 100644 index 0000000..ee8fb0f --- /dev/null +++ b/src/Helper/VerifyPredicatesLogic.sol @@ -0,0 +1,30 @@ +// SPDX-License-Identifier: MIT + +pragma solidity 0.8.21; + +import {IPredicates} from ".././interfaces/IPredicates.sol"; +import "forge-std/console.sol"; + +contract VerifyPredicatesLogic { + error PredicateIsNotTrue(); + + address public predicateContract; + + constructor(address _predicateContract) { + predicateContract = _predicateContract; + } + + function checkPredicate( + bytes calldata predicate + ) public view returns (bool) { + (bool success, uint256 res) = IPredicates(predicateContract) + .staticcallForUint(predicateContract, predicate); + return success && res == 1; + } + + function verify(bytes calldata predicates) external view { + if (predicates.length > 0) { + if (!checkPredicate(predicates)) revert PredicateIsNotTrue(); + } + } +} diff --git a/src/Mocks/CallSwap.sol b/src/Mocks/CallSwap.sol new file mode 100644 index 0000000..af271ba --- /dev/null +++ b/src/Mocks/CallSwap.sol @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.21; + +import {SafeERC20} from "openzeppelin/token/ERC20/utils/SafeERC20.sol"; +import {IERC20} from "openzeppelin/token/ERC20/IERC20.sol"; +import {IPreInteractionNotificationReceiver} from "./../interfaces/IPreInteractionNotificationReceiver.sol"; +import {console2} from "forge-std/Test.sol"; + +contract Swapper is IPreInteractionNotificationReceiver { + using SafeERC20 for IERC20; + IERC20 weth = IERC20(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2); + address swapRouter2 = 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45; + + event Swapped( + bytes32 orderHash, + address maker, + uint256 executedSellAmount, + uint256 executedBuyAmount, + uint256 filledSellAmount, + bytes interactionData, + bytes result + ); + + function fillOrderPreInteraction( + bytes32 orderHash, + address maker, + uint256 executedSellAmount, + uint256 executedBuyAmount, + uint256 filledSellAmount, + bytes memory interactionData + ) external { + + // console2.log("balance: ", weth.balanceOf(address(this))); + weth.approve(swapRouter2, type(uint).max); + (bool success, bytes memory data) = address(swapRouter2).call(interactionData); + require (success); + + + emit Swapped( + orderHash, + maker, + executedSellAmount, + executedBuyAmount, + filledSellAmount, + interactionData, + data + ); + } +} diff --git a/src/Mocks/CallTransfer.sol b/src/Mocks/CallTransfer.sol new file mode 100644 index 0000000..976ee2e --- /dev/null +++ b/src/Mocks/CallTransfer.sol @@ -0,0 +1,56 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.21; + +import {SafeERC20} from "openzeppelin/token/ERC20/utils/SafeERC20.sol"; +import {IERC20} from "openzeppelin/token/ERC20/IERC20.sol"; +import {OrderEngine} from "./../libraries/OrderEngine.sol"; +import {IFacilitatorInteractionNotificationReceiver} from "./../interfaces/IFacilitatorInteractionNotificationReceiver.sol"; +import {console2} from "forge-std/Test.sol"; + +contract Helper is IFacilitatorInteractionNotificationReceiver { + using SafeERC20 for IERC20; + IERC20 weth = IERC20(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2); + address operator = 0x0376AAc07Ad725E01357B1725B5ceC61aE10473c; + + event Swapped( + bytes32 orderHash, + address maker, + address executedSellAmount, + uint256 executedBuyAmount, + bytes interactionData, + bytes result + ); + + function fillOrderInteraction( + OrderEngine.Order[] calldata orders, + uint256[] calldata, + uint256[] calldata, + IERC20[] calldata borrowedTokens, + uint256[] calldata borrowedAmounts, + bytes memory interactionData + ) external { + + for (uint i = 0; i < borrowedTokens.length; i++) { + + interactionData = abi.encodeWithSelector( + weth.transfer.selector, + operator, + borrowedAmounts[i] + ); + + (bool success, bytes memory data) = address(borrowedTokens[i]).call(interactionData); + require (success); + + emit Swapped( + OrderEngine.hash(orders[i]), + orders[i].maker, + address(borrowedTokens[i]), + borrowedAmounts[i], + interactionData, + data + ); + } + + + } +} diff --git a/src/Mocks/FacilitatorSwap.sol b/src/Mocks/FacilitatorSwap.sol new file mode 100644 index 0000000..737dbc9 --- /dev/null +++ b/src/Mocks/FacilitatorSwap.sol @@ -0,0 +1,58 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.21; + +import {SafeERC20} from "openzeppelin/token/ERC20/utils/SafeERC20.sol"; +import {IERC20} from "openzeppelin/token/ERC20/IERC20.sol"; +import {OrderEngine} from "./../libraries/OrderEngine.sol"; +import {IFacilitatorInteractionNotificationReceiver} from "./../interfaces/IFacilitatorInteractionNotificationReceiver.sol"; +import {console2} from "forge-std/Test.sol"; + +contract FacilitatorSwap is IFacilitatorInteractionNotificationReceiver { + using SafeERC20 for IERC20; + IERC20 usdc = IERC20(0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48); + address swapRouter2 = 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45; + + event Swapped( + bytes32 orderHash, + address maker, + address executedSellAmount, + uint256 executedBuyAmount, + bytes interactionData, + bytes result + ); + + function fillOrderInteraction( + OrderEngine.Order[] calldata orders, + uint256[] calldata, + uint256[] calldata, + IERC20[] calldata borrowedTokens, + uint256[] calldata borrowedAmounts, + bytes memory interactionData + ) external { + (bool success, bytes memory data) = address(swapRouter2).call(interactionData); + require (success); + + emit Swapped( + OrderEngine.hash(orders[0]), + orders[0].maker, + address(borrowedTokens[0]), + borrowedAmounts[0], + interactionData, + data + ); + } + + function approve( + address token, + address to, + uint256 amount + ) external { + IERC20(token).approve(to, amount); + } + + function updateRouter( + address newRouter + ) external { + swapRouter2 = newRouter; + } +} diff --git a/src/Vault.sol b/src/Vault.sol index 9b4a63f..c6bf58d 100644 --- a/src/Vault.sol +++ b/src/Vault.sol @@ -10,9 +10,10 @@ abstract contract Vault { function _receiveAsset( IERC20 token, uint256 amount, - address maker + address maker, + address to ) internal { - token.safeTransferFrom(maker, address(this), amount); + token.safeTransferFrom(maker, to, amount); } function _sendAsset(IERC20 token, uint256 amount, address maker) internal { diff --git a/src/interfaces/IFacilitatorInteractionNotificationReceiver.sol b/src/interfaces/IFacilitatorInteractionNotificationReceiver.sol index b862470..c9efc26 100644 --- a/src/interfaces/IFacilitatorInteractionNotificationReceiver.sol +++ b/src/interfaces/IFacilitatorInteractionNotificationReceiver.sol @@ -17,6 +17,7 @@ interface IFacilitatorInteractionNotificationReceiver { * @param borrowedTokens An array of token addresses the facilitator wants to borrow from the vault. * @param borrowedAmounts An array specifying the corresponding amounts of each token the facilitator wants to borrow. * @param interactionData Interaction calldata + * @dev `executedSellAmounts` and `executedBuyAmounts` have to be divided by 1e18 since contract recieves them scaled upto 1e36 */ function fillOrderInteraction( OrderEngine.Order[] calldata orders, diff --git a/src/interfaces/IPostInteractionNotificationReceiver.sol b/src/interfaces/IPostInteractionNotificationReceiver.sol index 143f9b2..b915e2a 100644 --- a/src/interfaces/IPostInteractionNotificationReceiver.sol +++ b/src/interfaces/IPostInteractionNotificationReceiver.sol @@ -14,6 +14,7 @@ interface IPostInteractionNotificationReceiver { * @param executedBuyAmount Buy token amount offered by the facilitator to the maker. * @param filledSellAmount Amount of sell tokens that would be filled after this transaction is completed. * @param interactionData Interaction calldata + * @dev `executedSellAmounts` & `executedBuyAmounts` DO NOT have to be scaled down by 1e18 */ function fillOrderPostInteraction( bytes32 orderHash, diff --git a/src/interfaces/IPreInteractionNotificationReceiver.sol b/src/interfaces/IPreInteractionNotificationReceiver.sol index f42c4e0..72ad7e8 100644 --- a/src/interfaces/IPreInteractionNotificationReceiver.sol +++ b/src/interfaces/IPreInteractionNotificationReceiver.sol @@ -14,6 +14,7 @@ interface IPreInteractionNotificationReceiver { * @param executedBuyAmount Buy token amount offered by the facilitator to the maker. * @param filledSellAmount Amount of sell tokens that would be filled after this transaction is completed. * @param interactionData Interaction calldata + * @dev `executedSellAmounts` & `executedBuyAmounts` DO NOT have to be scaled down by 1e18 */ function fillOrderPreInteraction( bytes32 orderHash, diff --git a/src/libraries/OrderEngine.sol b/src/libraries/OrderEngine.sol index 24c4025..00e43f3 100644 --- a/src/libraries/OrderEngine.sol +++ b/src/libraries/OrderEngine.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.21; -import {IERC20} from "openzeppelin/token/ERC20/IERC20.sol"; +import {ECDSA} from "openzeppelin/utils/cryptography/EIP712.sol"; library OrderEngine { struct Order { @@ -13,8 +13,8 @@ library OrderEngine { address maker; address operator; // Null on public orders address recipient; - IERC20 sellToken; - IERC20 buyToken; + address sellToken; + address buyToken; bool isPartiallyFillable; bytes32 extraData; bytes predicateCalldata; @@ -33,8 +33,8 @@ library OrderEngine { "address maker," "address operator," "address recipient," - "IERC20 sellToken," - "IERC20 buyToken," + "address sellToken," + "address buyToken," "bool isPartiallyFillable," "bytes32 extraData," "bytes predicateCalldata," @@ -68,6 +68,73 @@ library OrderEngine { ); } + function hash(Order calldata order, bytes32 domainSeparator) public pure returns (bytes32) { + return ECDSA.toTypedDataHash(domainSeparator, hash(order)); + } + + function encodeOrder(Order calldata order) public pure returns (bytes memory) { + return ( + abi.encode( + order.nonce, + order.validTill, + order.sellTokenAmount, + order.buyTokenAmount, + order.feeAmounts, + order.maker, + order.operator, + order.recipient, + order.sellToken, + order.buyToken, + order.isPartiallyFillable, + order.extraData, + keccak256(order.predicateCalldata), + keccak256(order.preInteraction), + keccak256(order.postInteraction) + ) + ); + } + + function decodeOrder(bytes memory encodedOrder) public pure returns (Order memory) { + ( + uint256 nonce, + uint256 validTill, + uint256 sellTokenAmount, + uint256 buyTokenAmount, + uint256 feeAmounts, + address maker, + address operator, + address recipient, + address sellTokenAddress, + address buyTokenAddress, + bool isPartiallyFillable, + bytes32 extraData, + bytes32 predicateCalldata, + bytes32 preInteraction, + bytes32 postInteraction + ) = abi.decode(encodedOrder, (uint256, uint256, uint256, uint256, uint256, address, address, address, address, address, bool, bytes32, bytes32, bytes32, bytes32)); + + // Assemble the decoded data into an Order struct + Order memory order = Order({ + nonce: nonce, + validTill: validTill, + sellTokenAmount: sellTokenAmount, + buyTokenAmount: buyTokenAmount, + feeAmounts: feeAmounts, + maker: maker, + operator: operator, + recipient: recipient, + sellToken: sellTokenAddress, + buyToken: buyTokenAddress, + isPartiallyFillable: isPartiallyFillable, + extraData: extraData, + predicateCalldata: abi.encodePacked(predicateCalldata), + preInteraction: abi.encodePacked(preInteraction), + postInteraction: abi.encodePacked(postInteraction) + }); + + return order; + } + function isContract(Order calldata order) public view returns (bool) { return order.maker.code.length > 0; } diff --git a/test/.DS_Store b/test/.DS_Store new file mode 100644 index 0000000..9a59c11 Binary files /dev/null and b/test/.DS_Store differ diff --git a/test/AdvancedOrderEngine.t.sol b/test/AdvancedOrderEngine.t.sol new file mode 100644 index 0000000..ff6ab01 --- /dev/null +++ b/test/AdvancedOrderEngine.t.sol @@ -0,0 +1,3590 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.21; + +import "forge-std/Test.sol"; +import "./../src/Predicates.sol"; +import "./../src/interfaces/IPredicates.sol"; +import "./../src/AdvancedOrderEngine.sol"; +import "./../src/AdvancedOrderEngineErrors.sol"; +import "./../src/libraries/OrderEngine.sol"; +import "./../src/Helper/GenerateCalldata.sol"; +import "./../src/Mocks/CallSwap.sol"; +import "./../src/Mocks/FacilitatorSwap.sol"; +import "./../src/Mocks/CallTransfer.sol"; +import "./interfaces/swaprouter.sol"; +import "./interfaces/weth9.sol"; +import "./interfaces/pricefeed.sol"; +import "./interfaces/quoter.sol"; +import "openzeppelin/token/ERC20/IERC20.sol"; +import "openzeppelin/utils/cryptography/ECDSA.sol"; + +contract AdvancedOrderEngineTest is Test { + Predicates predicates; + AdvancedOrderEngine advancedOrderEngine; + GenerateCalldata generateCalldata; + address helper; + address swapper; + IERC20 wmatic = IERC20(0x7c9f4C87d911613Fe9ca58b579f737911AAD2D43); + IERC20 usdc = IERC20(0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48); + IWETH9 weth = IWETH9(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2); + IERC20 wbtc = IERC20(0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599); + ISwapRouter02 swapRouter02 = ISwapRouter02(0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45); + IPriceFeed usdc_eth = IPriceFeed(0x986b5E1e1755e3C2440e960477f25201B0a8bbD4); + IQuoter qouter = IQuoter(0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6); + IQuoter positions = IQuoter(0xC36442b4a4522E871399CD717aBDD847Ab11FE88); + address zeroAddress = address(0); + address feeCollector = address(147578); + address admin = address(3); + uint256 maker1PrivateKey = 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80; + address maker1 = vm.addr(maker1PrivateKey); // 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 + uint256 maker2PrivateKey = 0xac0974bec39a17e36ba4a6b4d233ff944bacb478cbed5efcae784d7bf4f2ff80; + address maker2 = vm.addr(maker2PrivateKey); // 0xB60397D6aFedC75370De0Dc16eD96675D3c50b79 + uint256 maker3PrivateKey = 0xac0974bec38a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80; + address maker3 = vm.addr(maker3PrivateKey); // + uint256 operatorPrivateKey = 0xB0B; + address operator = vm.addr(operatorPrivateKey); + + + function setUp() public { + vm.createSelectFork(vm.envString("MAINNET_RPC_URL"), 18561278); + vm.startPrank(admin); + + predicates = new Predicates(); + generateCalldata = new GenerateCalldata(address(predicates)); + advancedOrderEngine = new AdvancedOrderEngine(IPredicates(address(predicates)), feeCollector); + swapper = address(new Swapper()); + helper = address(new Helper()); + + advancedOrderEngine.manageOperatorPrivilege(operator, true); + + address[] memory tokens = new address[](3); + bool[] memory access = new bool[](3); + + tokens[0] = address(usdc); // Assuming these addresses are valid ERC20 tokens + tokens[1] = address(weth); + tokens[2] = address(wmatic); + + // Whitelisting tokens + access[0] = true; + access[1] = true; + access[2] = true; + advancedOrderEngine.updateTokenWhitelist(tokens, access); + + vm.deal(maker1, 20 ether); + vm.deal(maker2, 20 ether); + vm.deal(maker3, 20 ether); + vm.deal(operator, 20 ether); + vm.deal(admin, 20 ether); + + vm.stopPrank(); + + vm.startPrank(maker2); + + weth.approve(address(swapRouter02), UINT256_MAX); + weth.approve(address(advancedOrderEngine), UINT256_MAX); + + // get weth + weth.deposit{value: 1 ether}(); + + usdc.approve(address(swapRouter02), UINT256_MAX); + usdc.approve(address(advancedOrderEngine), UINT256_MAX); + + // get usdc + swapRouter02.exactInputSingle{value: 1 ether}( + ISwapRouter02.ExactInputSingleParams ( + address(weth), + address(usdc), + 500, + maker2, + 1 ether, + 0, + 0 + ) + ); + + vm.stopPrank(); + + vm.startPrank(maker1); + + weth.approve(address(swapRouter02), UINT256_MAX); + weth.approve(address(advancedOrderEngine), UINT256_MAX); + + // get weth + weth.deposit{value: 1 ether}(); + + usdc.approve(address(swapRouter02), UINT256_MAX); + usdc.approve(address(advancedOrderEngine), UINT256_MAX); + + // get usdc + swapRouter02.exactInputSingle{value: 1 ether}( + ISwapRouter02.ExactInputSingleParams ( + address(weth), + address(usdc), + 500, + maker1, + 1 ether, + 0, + 0 + ) + ); + + vm.stopPrank(); + + vm.startPrank(maker3); + + weth.approve(address(swapRouter02), UINT256_MAX); + weth.approve(address(advancedOrderEngine), UINT256_MAX); + + // get weth + weth.deposit{value: 1 ether}(); + + usdc.approve(address(swapRouter02), UINT256_MAX); + usdc.approve(address(advancedOrderEngine), UINT256_MAX); + + // get usdc + swapRouter02.exactInputSingle{value: 1 ether}( + ISwapRouter02.ExactInputSingleParams ( + address(weth), + address(usdc), + 500, + maker3, + 1 ether, + 0, + 0 + ) + ); + + + wmatic.approve(address(swapRouter02), UINT256_MAX); + wmatic.approve(address(advancedOrderEngine), UINT256_MAX); + + // get matic + swapRouter02.exactInputSingle{value: 1 ether}( + ISwapRouter02.ExactInputSingleParams ( + address(weth), + address(wmatic), + 3000, + maker3, + 1 ether, + 0, + 0 + ) + ); + + vm.stopPrank(); + + vm.startPrank(operator); + + weth.approve(address(swapRouter02), UINT256_MAX); + weth.approve(address(advancedOrderEngine), UINT256_MAX); + + // get weth + weth.deposit{value: 1 ether}(); + + usdc.approve(address(swapRouter02), UINT256_MAX); + usdc.approve(address(advancedOrderEngine), UINT256_MAX); + + // get usdc + swapRouter02.exactInputSingle{value: 1 ether}( + ISwapRouter02.ExactInputSingleParams ( + address(weth), + address(usdc), + 3000, + operator, + 1 ether, + 0, + 0 + ) + ); + + vm.stopPrank(); + } + + function testWithdraw() public { + + ( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts,,, + ) = getStandardInput1(); + + vm.prank(operator); + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + vm.startPrank(admin); + + vm.expectRevert(ZeroAddress.selector); + advancedOrderEngine.withdraw( + address(0), + 1 * 10 ** 6, + admin + ); + + vm.expectRevert(ZeroAddress.selector); + advancedOrderEngine.withdraw( + address(usdc), + 1 * 10 ** 6, + address(0) + ); + + vm.expectRevert(); + advancedOrderEngine.withdraw( + address(usdc), + 2 * 10 ** 6, + address(0) + ); + + uint256 balBefore = usdc.balanceOf(admin); + advancedOrderEngine.withdraw( + address(usdc), + 1 * 10 ** 6, + admin + ); + uint256 balAfter = usdc.balanceOf(admin); + + assertEq(balBefore + 1 * 10 ** 6, balAfter); + + vm.stopPrank(); + + vm.expectRevert(bytes("Ownable: caller is not the owner")); + advancedOrderEngine.withdraw( + address(usdc), + 1 * 10 ** 6, + admin + ); + } + + function testOperatorPriviledge() public { + vm.startPrank(admin); + + address testOperator = address(99); + + assertEq(advancedOrderEngine.isOperator(testOperator), false); + + advancedOrderEngine.manageOperatorPrivilege(testOperator, true); + assertEq(advancedOrderEngine.isOperator(testOperator), true); + + vm.expectRevert(AccessStatusUnchanged.selector); + advancedOrderEngine.manageOperatorPrivilege(testOperator, true); + + advancedOrderEngine.manageOperatorPrivilege(testOperator, false); + assertEq(advancedOrderEngine.isOperator(testOperator), false); + + vm.expectRevert(ZeroAddress.selector); + advancedOrderEngine.manageOperatorPrivilege(zeroAddress, false); + + vm.stopPrank(); + + vm.expectRevert(bytes("Ownable: caller is not the owner")); + advancedOrderEngine.manageOperatorPrivilege(zeroAddress, false); + } + + function testSetFee() public { + vm.startPrank(admin); + + assertEq(advancedOrderEngine.minimumFee(), 0); + + uint fee = 1295; + + advancedOrderEngine.setMinimumFee(fee); + assertEq(advancedOrderEngine.minimumFee(), fee); + + fee = 129500; + + vm.expectRevert(ExceedsTwentyPercent.selector); + advancedOrderEngine.setMinimumFee(fee); + + fee = 0; + + advancedOrderEngine.setMinimumFee(fee); + assertEq(advancedOrderEngine.minimumFee(), fee); + + vm.stopPrank(); + + vm.expectRevert(bytes("Ownable: caller is not the owner")); + advancedOrderEngine.manageOperatorPrivilege(zeroAddress, false); + } + + function testUpdateTokenWhitelist() public { + vm.startPrank(admin); + + address[] memory tokens = new address[](2); + bool[] memory access = new bool[](2); + + tokens[0] = address(1); // Assuming these addresses are valid ERC20 tokens + tokens[1] = address(2); + + // Initial status should be not whitelisted + assertEq(advancedOrderEngine.isWhitelistedToken(tokens[0]), false); + assertEq(advancedOrderEngine.isWhitelistedToken(tokens[1]), false); + + // Whitelisting tokens + access[0] = true; + access[1] = true; + advancedOrderEngine.updateTokenWhitelist(tokens, access); + + // Verify the tokens are now whitelisted + assertEq(advancedOrderEngine.isWhitelistedToken(tokens[0]), true); + assertEq(advancedOrderEngine.isWhitelistedToken(tokens[1]), true); + + // // Test for AccessStatusUnchanged revert + // vm.expectRevert(AccessStatusUnchanged.selector); + // advancedOrderEngine.updateTokenWhitelist(tokens, access); + + // Remove from whitelist + access[0] = false; + access[1] = false; + advancedOrderEngine.updateTokenWhitelist(tokens, access); + + // Verify the tokens are no longer whitelisted + assertEq(advancedOrderEngine.isWhitelistedToken(tokens[0]), false); + assertEq(advancedOrderEngine.isWhitelistedToken(tokens[1]), false); + + // Test for ZeroAddress revert + tokens[0] = address(0); // Zero address token + vm.expectRevert(ZeroAddress.selector); + advancedOrderEngine.updateTokenWhitelist(tokens, access); + + // Test for ArraysLengthMismatch revert + address[] memory mismatchedTokens = new address[](1); + bool[] memory mismatchedAccess = new bool[](2); + vm.expectRevert(ArraysLengthMismatch.selector); + advancedOrderEngine.updateTokenWhitelist(mismatchedTokens, mismatchedAccess); + + // Test for onlyOwner modifier + vm.stopPrank(); + vm.expectRevert(bytes("Ownable: caller is not the owner")); + advancedOrderEngine.updateTokenWhitelist(tokens, access); + } + + function testChangePredicateAddress() public { + vm.startPrank(admin); + + IPredicates newPredicatesAddr = IPredicates(address(3)); // Assuming this is a valid address + + // Change to a new address + advancedOrderEngine.changePredicateAddress(newPredicatesAddr); + assertEq(address(advancedOrderEngine.predicates()), address(newPredicatesAddr)); + + // Test for ZeroAddress revert + vm.expectRevert(ZeroAddress.selector); + advancedOrderEngine.changePredicateAddress(IPredicates(address(0))); + + // Test for SamePredicateAddress revert + vm.expectRevert(SamePredicateAddress.selector); + advancedOrderEngine.changePredicateAddress(newPredicatesAddr); + + // Test for onlyOwner modifier + vm.stopPrank(); + vm.expectRevert(bytes("Ownable: caller is not the owner")); + advancedOrderEngine.changePredicateAddress(newPredicatesAddr); + } + + function testChangeFeeCollectorAddress() public { + vm.startPrank(admin); + + address newFeeCollectorAddr = address(4); // Assuming this is a valid address + + // Change to a new fee collector address + advancedOrderEngine.changeFeeCollectorAddress(newFeeCollectorAddr); + assertEq(advancedOrderEngine.feeCollector(), newFeeCollectorAddr); + + // Test for ZeroAddress revert + vm.expectRevert(ZeroAddress.selector); + advancedOrderEngine.changeFeeCollectorAddress(address(0)); + + // Test for SameFeeCollectorAddress revert + vm.expectRevert(SameFeeCollectorAddress.selector); + advancedOrderEngine.changeFeeCollectorAddress(newFeeCollectorAddr); + + // Test for onlyOwner modifier + vm.stopPrank(); + vm.expectRevert(bytes("Ownable: caller is not the owner")); + advancedOrderEngine.changeFeeCollectorAddress(newFeeCollectorAddr); + } + + function testFillOrders() public { + uint beforeUsdcMaker2 = usdc.balanceOf(maker2); + uint beforeWethMaker2 = weth.balanceOf(maker2); + uint beforeUsdcMaker1 = usdc.balanceOf(maker1); + uint beforeWethMaker1 = weth.balanceOf(maker1); + + vm.startPrank(operator); + + ( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts,, + // OrderEngine.Order memory buyOrder, + // OrderEngine.Order memory sellOrder + ) = getStandardInput(); + + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + vm.stopPrank(); + + uint afterUsdcMaker2 = usdc.balanceOf(maker2); + uint afterWethMaker2 = weth.balanceOf(maker2); + uint afterUsdcMaker1 = usdc.balanceOf(maker1); + uint afterWethMaker1 = weth.balanceOf(maker1); + + assertEq(beforeUsdcMaker2, afterUsdcMaker2 + sell[0] / 1e18); + assertEq(beforeWethMaker2 + buy[0] / 1e18, afterWethMaker2); + assertEq(beforeUsdcMaker1 + buy[1] / 1e18, afterUsdcMaker1); + assertEq(beforeWethMaker1 , afterWethMaker1 + sell[1] / 1e18); + } + + function testRingOrders() public { + uint beforeUsdcMaker1 = usdc.balanceOf(maker1); + uint beforeWethMaker1 = weth.balanceOf(maker1); + uint beforeWethMaker2 = weth.balanceOf(maker2); + uint beforeMaticMaker2 = wmatic.balanceOf(maker2); + uint beforeUsdcMaker3 = usdc.balanceOf(maker3); + uint beforeMaticMaker3 = wmatic.balanceOf(maker3); + + vm.startPrank(operator); + + ( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts,,, + // OrderEngine.Order memory order1, + // OrderEngine.Order memory order2, + // OrderEngine.Order memory order3 + ) = getStandardInput4(); + + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + vm.stopPrank(); + + uint afterUsdcMaker1 = usdc.balanceOf(maker1); + uint afterWethMaker1 = weth.balanceOf(maker1); + uint afterWethMaker2 = weth.balanceOf(maker2); + uint afterMaticMaker2 = wmatic.balanceOf(maker2); + uint afterUsdcMaker3 = usdc.balanceOf(maker3); + uint afterMaticMaker3 = wmatic.balanceOf(maker3); + + assertEq(beforeUsdcMaker1, afterUsdcMaker1 + sell[2] / 1e18); + assertEq(beforeWethMaker1 + buy[2] / 1e18 , afterWethMaker1); + assertEq(beforeWethMaker2, afterWethMaker2 + sell[1] / 1e18); + assertEq(beforeMaticMaker2 + buy[1] / 1e18, afterMaticMaker2); + assertEq(beforeMaticMaker3, afterMaticMaker3 + sell[0] / 1e18); + assertEq(beforeUsdcMaker3 + buy[0] / 1e18, afterUsdcMaker3); + } + + function testFillOrderInChunks() public { + uint beforeUsdcMaker2 = usdc.balanceOf(maker2); + uint beforeWethMaker2 = weth.balanceOf(maker2); + uint beforeUsdcMaker1 = usdc.balanceOf(maker1); + uint beforeWethMaker1 = weth.balanceOf(maker1); + + vm.startPrank(operator); + + ( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts, + OrderEngine.Order memory order1, + OrderEngine.Order memory order2 + ) = getStandardInput(); + + sell = new uint256[](2); + + sell[0] = order2.sellTokenAmount / 2; + sell[1] = order1.sellTokenAmount / 2; + + buy = new uint256[](2); + + buy[0] = order2.buyTokenAmount / 2; + buy[1] = order1.buyTokenAmount / 2; + + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + vm.stopPrank(); + + uint afterUsdcMaker2 = usdc.balanceOf(maker2); + uint afterWethMaker2 = weth.balanceOf(maker2); + uint afterUsdcMaker1 = usdc.balanceOf(maker1); + uint afterWethMaker1 = weth.balanceOf(maker1); + + assertEq(beforeUsdcMaker2, afterUsdcMaker2 + sell[0] / 1e18); + assertEq(beforeWethMaker2 + buy[0] / 1e18, afterWethMaker2); + assertEq(beforeUsdcMaker1 + buy[1] / 1e18, afterUsdcMaker1); + assertEq(beforeWethMaker1 , afterWethMaker1 + sell[1] / 1e18); + } + + function testNoOrderInputFillOrders() public { + uint beforeUsdcMaker2 = usdc.balanceOf(maker2); + uint beforeWethMaker2 = weth.balanceOf(maker2); + uint beforeUsdcMaker1 = usdc.balanceOf(maker1); + uint beforeWethMaker1 = weth.balanceOf(maker1); + + vm.startPrank(operator); + + ( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts,, + ) = getStandardInput(); + + orders = new OrderEngine.Order[](0); + + vm.expectRevert(EmptyArray.selector); + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + vm.stopPrank(); + + uint afterUsdcMaker2 = usdc.balanceOf(maker2); + uint afterWethMaker2 = weth.balanceOf(maker2); + uint afterUsdcMaker1 = usdc.balanceOf(maker1); + uint afterWethMaker1 = weth.balanceOf(maker1); + + assertEq(beforeUsdcMaker2, afterUsdcMaker2); + assertEq(beforeWethMaker2, afterWethMaker2); + assertEq(beforeUsdcMaker1, afterUsdcMaker1); + assertEq(beforeWethMaker1 , afterWethMaker1); + } + + function testInvalidInputFillOrders() public { + uint beforeUsdcMaker2 = usdc.balanceOf(maker2); + uint beforeWethMaker2 = weth.balanceOf(maker2); + uint beforeUsdcMaker1 = usdc.balanceOf(maker1); + uint beforeWethMaker1 = weth.balanceOf(maker1); + + vm.startPrank(operator); + + ( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts,, + OrderEngine.Order memory sellOrder + ) = getStandardInput(); + + sellOrder.validTill = block.timestamp - 1000; + orders[0] = sellOrder; + + // expired order + vm.expectRevert( + abi.encodeWithSelector( + OrderExpired.selector, + advancedOrderEngine.getOrderHash(sellOrder) + ) + ); + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + // zero amount + sellOrder.validTill = block.timestamp + 1000; + uint prevSellAmount = sellOrder.sellTokenAmount; + sellOrder.sellTokenAmount = 0; + orders[0] = sellOrder; + + // zero amount + vm.expectRevert(ZeroAmount.selector); + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + // not white listed token + sellOrder.sellTokenAmount = prevSellAmount; + address prevToken = sellOrder.sellToken; + sellOrder.sellToken = address(wbtc); + orders[0] = sellOrder; + + vm.expectRevert(TokenNotWhitelisted.selector); + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + // not zero address token + sellOrder.sellTokenAmount = prevSellAmount; + sellOrder.sellToken = address(0); + orders[0] = sellOrder; + + vm.expectRevert(TokenNotWhitelisted.selector); + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + // zero address operator + sellOrder.sellToken = prevToken; + sellOrder.operator = address(99); + orders[0] = sellOrder; + + vm.expectRevert(PrivateOrder.selector); + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + // zero address operator + sellOrder.operator = address(0); + orders[0] = sellOrder; + + vm.expectRevert(InvalidSignature.selector); + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + vm.stopPrank(); + + uint afterUsdcMaker2 = usdc.balanceOf(maker2); + uint afterWethMaker2 = weth.balanceOf(maker2); + uint afterUsdcMaker1 = usdc.balanceOf(maker1); + uint afterWethMaker1 = weth.balanceOf(maker1); + + assertEq(beforeUsdcMaker2, afterUsdcMaker2); + assertEq(beforeWethMaker2, afterWethMaker2); + assertEq(beforeUsdcMaker1, afterUsdcMaker1); + assertEq(beforeWethMaker1 , afterWethMaker1); + } + + function testOrderReplay() public { + + vm.startPrank(operator); + + ( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts,, + ) = getStandardInput(); + + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + // order replay + vm.expectRevert(OrderFilledAlready.selector); + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + vm.stopPrank(); + } + + function testInputLengthMismatchFillOrders() public { + uint beforeUsdcMaker2 = usdc.balanceOf(maker2); + uint beforeWethMaker2 = weth.balanceOf(maker2); + uint beforeUsdcMaker1 = usdc.balanceOf(maker1); + uint beforeWethMaker1 = weth.balanceOf(maker1); + + vm.startPrank(operator); + + ( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts, + OrderEngine.Order memory buyOrder, + OrderEngine.Order memory sellOrder + ) = getStandardInput(); + + orders = new OrderEngine.Order[](1); + + orders[0] = sellOrder; + + // if orderlength != sell order or buy order length + vm.expectRevert(ArraysLengthMismatch.selector); + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + // if sell order != order || buy order || sig + orders = new OrderEngine.Order[](2); + + orders[0] = sellOrder; + orders[1] = buyOrder; + + sell = new uint256[](1); + + sell[0] = sellOrder.sellTokenAmount; + + vm.expectRevert(ArraysLengthMismatch.selector); + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + // if buy order != sell order || order || sig + buy = new uint256[](1); + + buy[0] = sellOrder.buyTokenAmount; + // buy[1] = buyOrder.buyTokenAmount; + + sell = new uint256[](2); + + sell[0] = sellOrder.sellTokenAmount; + sell[1] = buyOrder.sellTokenAmount; + + vm.expectRevert(ArraysLengthMismatch.selector); + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + // if sig != buy order || sell order || sig + buy = new uint256[](2); + + buy[0] = sellOrder.buyTokenAmount; + buy[1] = buyOrder.buyTokenAmount; + + signatures = new bytes[](1); + + (uint8 v, bytes32 r, bytes32 s) = vm.sign(maker2PrivateKey, _hashTypedDataV4(OrderEngine.hash(sellOrder))); + bytes memory sellOrderSignature = abi.encodePacked(r, s, v); + + signatures[0] = sellOrderSignature; + + vm.expectRevert(ArraysLengthMismatch.selector); + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + vm.stopPrank(); + + uint afterUsdcMaker2 = usdc.balanceOf(maker2); + uint afterWethMaker2 = weth.balanceOf(maker2); + uint afterUsdcMaker1 = usdc.balanceOf(maker1); + uint afterWethMaker1 = weth.balanceOf(maker1); + + assertEq(beforeUsdcMaker2, afterUsdcMaker2); + assertEq(beforeWethMaker2, afterWethMaker2); + assertEq(beforeUsdcMaker1, afterUsdcMaker1); + assertEq(beforeWethMaker1 , afterWethMaker1); + } + + function testPartiallyFillableOrder() public { + uint beforeUsdcMaker2 = usdc.balanceOf(maker2); + uint beforeWethMaker2 = weth.balanceOf(maker2); + uint beforeUsdcMaker1 = usdc.balanceOf(maker1); + uint beforeWethMaker1 = weth.balanceOf(maker1); + + vm.startPrank(operator); + + ( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts, + OrderEngine.Order memory buyOrder, + OrderEngine.Order memory sellOrder + ) = getStandardInput(); + + sell[0] = sellOrder.sellTokenAmount / 2; + sell[1] = buyOrder.sellTokenAmount / 2; + buy[0] = sellOrder.buyTokenAmount / 2; + buy[1] = buyOrder.buyTokenAmount / 2; + + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + vm.stopPrank(); + + uint afterUsdcMaker2 = usdc.balanceOf(maker2); + uint afterWethMaker2 = weth.balanceOf(maker2); + uint afterUsdcMaker1 = usdc.balanceOf(maker1); + uint afterWethMaker1 = weth.balanceOf(maker1); + + assertEq(beforeUsdcMaker2, afterUsdcMaker2 + sell[0] / (1e18 * 2)); + assertEq(beforeWethMaker2 + buy[0] / (1e18 * 2), afterWethMaker2); + assertEq(beforeUsdcMaker1 + buy[1] / (1e18 * 2), afterUsdcMaker1); + assertEq(beforeWethMaker1 , afterWethMaker1 + sell[1] / (1e18 * 2)); + } + + function testExceedsOrderSellAmount() public { + + vm.startPrank(operator); + + ( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts, + OrderEngine.Order memory buyOrder, + OrderEngine.Order memory sellOrder + ) = getStandardInput(); + + sell[0] = sellOrder.sellTokenAmount * 2 * 1e18; + sell[1] = buyOrder.sellTokenAmount * 2 * 1e18; + buy[0] = sellOrder.buyTokenAmount * 2 * 1e18; + buy[1] = buyOrder.buyTokenAmount * 2 * 1e18; + + vm.expectRevert(ExceedsOrderSellAmount.selector); + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + vm.stopPrank(); + } + + function testPartiallyFillableOrderFail() public { + + vm.startPrank(operator); + + ( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts,, + ) = getStandardInput(); + + sell[0] = 8 * 10 ** 6; + sell[1] = 0.0022 * 10 ** 18; + + buy[0] = 0.0022 * 10 ** 18; + buy[1] = 8 * 10 ** 6; + + vm.expectRevert(LimitPriceNotRespected.selector); + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + vm.stopPrank(); + } + + function testInvalidSignature() public { + + vm.startPrank(operator); + + ( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts,, + ) = getStandardInput(); + + bytes memory temp = signatures[0]; + signatures[0] = signatures[1]; + signatures[1] = temp; + + vm.expectRevert(InvalidSignature.selector); + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + vm.stopPrank(); + } + + function testFillOrKillFail() public { + + vm.startPrank(operator); + + ( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts, + OrderEngine.Order memory buyOrder, + OrderEngine.Order memory sellOrder + ) = getStandardInput(); + + sell[0] = sellOrder.sellTokenAmount / 2; + sell[1] = buyOrder.sellTokenAmount / 2; + buy[0] = sellOrder.buyTokenAmount / 2; + buy[1] = buyOrder.buyTokenAmount / 2; + + orders[0].isPartiallyFillable = false; + orders[1].isPartiallyFillable = false; + + vm.expectRevert(LimitPriceNotRespected.selector); + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + vm.stopPrank(); + } + + function testPredicateFail() public { + + + // English: Only allow order execution if the return value from an arbitrary call is greater than some contraint. + // Predicate: gt(constraint(99999 * 10 ** 18), arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress)) + + // Step 1: Generate calldata to send to our target contract + bytes memory targetContractCalldata = abi.encodeWithSelector( + usdc_eth.latestAnswer.selector + ); // 'callDataToSendToTargetAddress' + + // Step 2: Generate predicates contract "arbitrary static call" function calldata + bytes memory arbitraryStaticCalldata = abi.encodeWithSignature( + "arbitraryStaticCall(address,bytes)", + address(usdc_eth), + targetContractCalldata + ); // arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress) + + // Step 3: Generate predicates contract "lt" function calldata + bytes memory ltFnCalldata = abi.encodeWithSignature( + "gt(uint256,bytes)", + _oraclePrice(), + arbitraryStaticCalldata + ); // lt(15, arbitraryS + // generateCalldata1 + + vm.startPrank(operator); + + ( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts, + OrderEngine.Order memory buyOrder, + OrderEngine.Order memory sellOrder + ) = getStandardInput(); + + orders[0].predicateCalldata = ltFnCalldata; + orders[1].predicateCalldata = ltFnCalldata; + + (uint8 v, bytes32 r, bytes32 s) = vm.sign(maker2PrivateKey, _hashTypedDataV4(OrderEngine.hash(sellOrder))); + bytes memory sellOrderSignature = abi.encodePacked(r, s, v); + + (v, r, s) = vm.sign(maker1PrivateKey, _hashTypedDataV4(OrderEngine.hash(buyOrder))); + bytes memory buyOrderSignature = abi.encodePacked(r, s, v); + + signatures[0] = sellOrderSignature; + signatures[1] = buyOrderSignature; + + vm.expectRevert(PredicateIsNotTrue.selector); + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + vm.stopPrank(); + } + + function testMultiplePredicateOR() public { + + uint beforeUsdcMaker2 = usdc.balanceOf(maker2); + uint beforeWethMaker2 = weth.balanceOf(maker2); + uint beforeUsdcMaker1 = usdc.balanceOf(maker1); + uint beforeWethMaker1 = weth.balanceOf(maker1); + + // English: Only allow order execution if the return value from an arbitrary call is greater than some contraint. + // Predicate: gt(constraint(99999 * 10 ** 18), arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress)) + + // Step 1: Generate calldata to send to our target contract + bytes memory targetContractCalldata = abi.encodeWithSelector( + usdc_eth.latestAnswer.selector + ); // 'callDataToSendToTargetAddress' + + // Step 2: Generate predicates contract "arbitrary static call" function calldata + bytes memory arbitraryStaticCalldata = abi.encodeWithSignature( + "arbitraryStaticCall(address,bytes)", + address(usdc_eth), + targetContractCalldata + ); // arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress) + + // Step 3: Generate predicates contract "lt" function calldata + bytes memory ltFnCalldata = abi.encodeWithSignature( + "lt(uint256,bytes)", + _oraclePrice(), + arbitraryStaticCalldata + ); // lt(15, arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress)) + + // Helpful in generating bytes offset (see below) + uint256 ltCalldataLength = bytes(ltFnCalldata).length; + // console.log("LT Calldata length1 ", ltCalldataLength); + + // Step 4: Generate calldata to send to our target contract (for GT) + targetContractCalldata = abi.encodeWithSelector( + usdc_eth.latestAnswer.selector + ); + + // Step 5: Generate predicates contract "arbitrary static call" function calldata (for GT) + arbitraryStaticCalldata = abi.encodeWithSignature( + "arbitraryStaticCall(address,bytes)", + address(usdc_eth), + targetContractCalldata + ); // arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress) + + // Step 6: Generate predicates contract "gt" function calldata + // 18 > 5 + bytes memory gtFnCalldata = abi.encodeWithSignature( + "gt(uint256,bytes)", + _oraclePrice(), + arbitraryStaticCalldata + ); + + // Helpful in generating bytes offset (see below) + uint256 gtCalldataLength = bytes(gtFnCalldata).length; + // console.log("GT Calldata length ", gtCalldataLength); + + // Step 7: generate 'offset' param value of 'or' fn of predicates contract + + // Generationg offset, required by 'or' fn of predicates contract + // We have two predicates, length of both predicates in 260, so first predicate offset would be 260 and second would be "firstPredicateLength + 260 = 520" + bytes memory offsetBytes = abi.encodePacked(uint32(ltCalldataLength + gtCalldataLength), uint32(ltCalldataLength)); + + // 'or' fn expects offset in uint256, so padding 0s + for (uint256 i = (32 - offsetBytes.length) / 4; i > 0; i--) { + offsetBytes = abi.encodePacked(uint32(0), offsetBytes); + } + uint256 offset = uint256(bytes32(offsetBytes)); + + // Step 8: combine both 'lt' and 'gt' predicates + bytes memory jointPredicates = abi.encodePacked( + bytes(ltFnCalldata), + bytes(gtFnCalldata) + ); + + // Step 9: Generating 'or' fn calldata + bytes memory orFnCalldata = abi.encodeWithSignature( + "or(uint256,bytes)", + offset, + jointPredicates + ); + + vm.startPrank(operator); + + ( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts, + OrderEngine.Order memory buyOrder, + OrderEngine.Order memory sellOrder + ) = getStandardInput(); + + orders[0].predicateCalldata = orFnCalldata; + orders[1].predicateCalldata = orFnCalldata; + + (uint8 v, bytes32 r, bytes32 s) = vm.sign(maker2PrivateKey, _hashTypedDataV4(OrderEngine.hash(sellOrder))); + bytes memory sellOrderSignature = abi.encodePacked(r, s, v); + + (v, r, s) = vm.sign(maker1PrivateKey, _hashTypedDataV4(OrderEngine.hash(buyOrder))); + bytes memory buyOrderSignature = abi.encodePacked(r, s, v); + + signatures[0] = sellOrderSignature; + signatures[1] = buyOrderSignature; + + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + vm.stopPrank(); + + uint afterUsdcMaker2 = usdc.balanceOf(maker2); + uint afterWethMaker2 = weth.balanceOf(maker2); + uint afterUsdcMaker1 = usdc.balanceOf(maker1); + uint afterWethMaker1 = weth.balanceOf(maker1); + + assertEq(beforeUsdcMaker2, afterUsdcMaker2 + sell[0] / 1e18); + assertEq(beforeWethMaker2 + buy[0] / 1e18, afterWethMaker2); + assertEq(beforeUsdcMaker1 + buy[1] / 1e18, afterUsdcMaker1); + assertEq(beforeWethMaker1 , afterWethMaker1 + sell[1] / 1e18); + } + + function testMultiplePredicateOR1() public { + + // English: Only allow order execution if the return value from an arbitrary call is greater than some contraint. + // Predicate: gt(constraint(99999 * 10 ** 18), arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress)) + + // Step 1: Generate calldata to send to our target contract + bytes memory targetContractCalldata = abi.encodeWithSelector( + usdc_eth.latestAnswer.selector + ); // 'callDataToSendToTargetAddress' + + // Step 2: Generate predicates contract "arbitrary static call" function calldata + bytes memory arbitraryStaticCalldata = abi.encodeWithSignature( + "arbitraryStaticCall(address,bytes)", + address(usdc_eth), + targetContractCalldata + ); // arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress) + + // Step 3: Generate predicates contract "lt" function calldata + bytes memory ltFnCalldata = abi.encodeWithSignature( + "lt(uint256,bytes)", + _oraclePrice(), + arbitraryStaticCalldata + ); // lt(15, arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress)) + + // Helpful in generating bytes offset (see below) + uint256 ltCalldataLength = bytes(ltFnCalldata).length; + // console.log("LT Calldata length1 ", ltCalldataLength); + + // Step 4: Generate calldata to send to our target contract (for GT) + targetContractCalldata = abi.encodeWithSelector( + usdc_eth.latestAnswer.selector + ); + + // Step 5: Generate predicates contract "arbitrary static call" function calldata (for GT) + arbitraryStaticCalldata = abi.encodeWithSignature( + "arbitraryStaticCall(address,bytes)", + address(usdc_eth), + targetContractCalldata + ); // arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress) + + // Step 6: Generate predicates contract "gt" function calldata + // 18 > 5 + bytes memory ltFnCalldata1 = abi.encodeWithSignature( + "lt(uint256,bytes)", + _oraclePrice(), + arbitraryStaticCalldata + ); + + // Helpful in generating bytes offset (see below) + uint256 ltCalldataLength1 = bytes(ltFnCalldata1).length; + // console.log("GT Calldata length ", gtCalldataLength); + + // Step 7: generate 'offset' param value of 'or' fn of predicates contract + + // Generationg offset, required by 'or' fn of predicates contract + // We have two predicates, length of both predicates in 260, so first predicate offset would be 260 and second would be "firstPredicateLength + 260 = 520" + bytes memory offsetBytes = abi.encodePacked(uint32(ltCalldataLength + ltCalldataLength1), uint32(ltCalldataLength)); + + // 'or' fn expects offset in uint256, so padding 0s + for (uint256 i = (32 - offsetBytes.length) / 4; i > 0; i--) { + offsetBytes = abi.encodePacked(uint32(0), offsetBytes); + } + uint256 offset = uint256(bytes32(offsetBytes)); + + // Step 8: combine both 'lt' and 'gt' predicates + bytes memory jointPredicates = abi.encodePacked( + bytes(ltFnCalldata), + bytes(ltFnCalldata1) + ); + + // Step 9: Generating 'or' fn calldata + bytes memory orFnCalldata = abi.encodeWithSignature( + "or(uint256,bytes)", + offset, + jointPredicates + ); + + vm.startPrank(operator); + + ( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts, + OrderEngine.Order memory buyOrder, + OrderEngine.Order memory sellOrder + ) = getStandardInput(); + + orders[0].predicateCalldata = orFnCalldata; + orders[1].predicateCalldata = orFnCalldata; + + (uint8 v, bytes32 r, bytes32 s) = vm.sign(maker2PrivateKey, _hashTypedDataV4(OrderEngine.hash(sellOrder))); + bytes memory sellOrderSignature = abi.encodePacked(r, s, v); + + (v, r, s) = vm.sign(maker1PrivateKey, _hashTypedDataV4(OrderEngine.hash(buyOrder))); + bytes memory buyOrderSignature = abi.encodePacked(r, s, v); + + signatures[0] = sellOrderSignature; + signatures[1] = buyOrderSignature; + + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + vm.stopPrank(); + } + + function testMultiplePredicateORFail() public { + + // English: Only allow order execution if the return value from an arbitrary call is greater than some contraint. + // Predicate: gt(constraint(99999 * 10 ** 18), arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress)) + + // Step 1: Generate calldata to send to our target contract + bytes memory targetContractCalldata = abi.encodeWithSelector( + usdc_eth.latestAnswer.selector + ); // 'callDataToSendToTargetAddress' + + // Step 2: Generate predicates contract "arbitrary static call" function calldata + bytes memory arbitraryStaticCalldata = abi.encodeWithSignature( + "arbitraryStaticCall(address,bytes)", + address(usdc_eth), + targetContractCalldata + ); // arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress) + + // Step 3: Generate predicates contract "lt" function calldata + bytes memory gtFnCalldata1 = abi.encodeWithSignature( + "gt(uint256,bytes)", + _oraclePrice(), + arbitraryStaticCalldata + ); // lt(15, arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress)) + + // Helpful in generating bytes offset (see below) + uint256 gtCalldataLength1 = bytes(gtFnCalldata1).length; + // console.log("LT Calldata length1 ", ltCalldataLength); + + // Step 4: Generate calldata to send to our target contract (for GT) + targetContractCalldata = abi.encodeWithSelector( + usdc_eth.latestAnswer.selector + ); + + // Step 5: Generate predicates contract "arbitrary static call" function calldata (for GT) + arbitraryStaticCalldata = abi.encodeWithSignature( + "arbitraryStaticCall(address,bytes)", + address(usdc_eth), + targetContractCalldata + ); // arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress) + + // Step 6: Generate predicates contract "gt" function calldata + // 18 > 5 + bytes memory gtFnCalldata = abi.encodeWithSignature( + "gt(uint256,bytes)", + _oraclePrice(), + arbitraryStaticCalldata + ); + + // Helpful in generating bytes offset (see below) + uint256 gtCalldataLength = bytes(gtFnCalldata).length; + // console.log("GT Calldata length ", gtCalldataLength); + + // Step 7: generate 'offset' param value of 'or' fn of predicates contract + + // Generationg offset, required by 'or' fn of predicates contract + // We have two predicates, length of both predicates in 260, so first predicate offset would be 260 and second would be "firstPredicateLength + 260 = 520" + bytes memory offsetBytes = abi.encodePacked(uint32(gtCalldataLength1 + gtCalldataLength), uint32(gtCalldataLength1)); + + // 'or' fn expects offset in uint256, so padding 0s + for (uint256 i = (32 - offsetBytes.length) / 4; i > 0; i--) { + offsetBytes = abi.encodePacked(uint32(0), offsetBytes); + } + uint256 offset = uint256(bytes32(offsetBytes)); + + // Step 8: combine both 'lt' and 'gt' predicates + bytes memory jointPredicates = abi.encodePacked( + bytes(gtFnCalldata1), + bytes(gtFnCalldata) + ); + + // Step 9: Generating 'or' fn calldata + bytes memory orFnCalldata = abi.encodeWithSignature( + "or(uint256,bytes)", + offset, + jointPredicates + ); + + vm.startPrank(operator); + + ( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts, + OrderEngine.Order memory buyOrder, + OrderEngine.Order memory sellOrder + ) = getStandardInput(); + + orders[0].predicateCalldata = orFnCalldata; + orders[1].predicateCalldata = orFnCalldata; + + (uint8 v, bytes32 r, bytes32 s) = vm.sign(maker2PrivateKey, _hashTypedDataV4(OrderEngine.hash(sellOrder))); + bytes memory sellOrderSignature = abi.encodePacked(r, s, v); + + (v, r, s) = vm.sign(maker1PrivateKey, _hashTypedDataV4(OrderEngine.hash(buyOrder))); + bytes memory buyOrderSignature = abi.encodePacked(r, s, v); + + signatures[0] = sellOrderSignature; + signatures[1] = buyOrderSignature; + + vm.expectRevert(PredicateIsNotTrue.selector); + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + vm.stopPrank(); + } + + function testMultiplePredicateANDFail() public { + + // English: Only allow order execution if the return value from an arbitrary call is greater than some contraint. + // Predicate: gt(constraint(99999 * 10 ** 18), arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress)) + + // Step 1: Generate calldata to send to our target contract + bytes memory targetContractCalldata = abi.encodeWithSelector( + usdc_eth.latestAnswer.selector + ); // 'callDataToSendToTargetAddress' + + // Step 2: Generate predicates contract "arbitrary static call" function calldata + bytes memory arbitraryStaticCalldata = abi.encodeWithSignature( + "arbitraryStaticCall(address,bytes)", + address(usdc_eth), + targetContractCalldata + ); // arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress) + + // Step 3: Generate predicates contract "lt" function calldata + bytes memory ltFnCalldata = abi.encodeWithSignature( + "lt(uint256,bytes)", + _oraclePrice(), + arbitraryStaticCalldata + ); // lt(15, arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress)) + + // Helpful in generating bytes offset (see below) + uint256 ltCalldataLength = bytes(ltFnCalldata).length; + // console.log("LT Calldata length1 ", ltCalldataLength); + + // Step 4: Generate calldata to send to our target contract (for GT) + targetContractCalldata = abi.encodeWithSelector( + usdc_eth.latestAnswer.selector + ); + + // Step 5: Generate predicates contract "arbitrary static call" function calldata (for GT) + arbitraryStaticCalldata = abi.encodeWithSignature( + "arbitraryStaticCall(address,bytes)", + address(usdc_eth), + targetContractCalldata + ); // arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress) + + // Step 6: Generate predicates contract "gt" function calldata + // 18 > 5 + bytes memory gtFnCalldata = abi.encodeWithSignature( + "gt(uint256,bytes)", + _oraclePrice(), + arbitraryStaticCalldata + ); + + // Helpful in generating bytes offset (see below) + uint256 gtCalldataLength = bytes(gtFnCalldata).length; + // console.log("GT Calldata length ", gtCalldataLength); + + // Step 7: generate 'offset' param value of 'or' fn of predicates contract + + // Generationg offset, required by 'or' fn of predicates contract + // We have two predicates, length of both predicates in 260, so first predicate offset would be 260 and second would be "firstPredicateLength + 260 = 520" + bytes memory offsetBytes = abi.encodePacked(uint32(ltCalldataLength + gtCalldataLength), uint32(ltCalldataLength)); + + // 'or' fn expects offset in uint256, so padding 0s + for (uint256 i = (32 - offsetBytes.length) / 4; i > 0; i--) { + offsetBytes = abi.encodePacked(uint32(0), offsetBytes); + } + uint256 offset = uint256(bytes32(offsetBytes)); + + // Step 8: combine both 'lt' and 'gt' predicates + bytes memory jointPredicates = abi.encodePacked( + bytes(ltFnCalldata), + bytes(gtFnCalldata) + ); + + // Step 9: Generating 'or' fn calldata + bytes memory orFnCalldata = abi.encodeWithSignature( + "and(uint256,bytes)", + offset, + jointPredicates + ); + + vm.startPrank(operator); + + ( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts, + OrderEngine.Order memory buyOrder, + OrderEngine.Order memory sellOrder + ) = getStandardInput(); + + orders[0].predicateCalldata = orFnCalldata; + orders[1].predicateCalldata = orFnCalldata; + + (uint8 v, bytes32 r, bytes32 s) = vm.sign(maker2PrivateKey, _hashTypedDataV4(OrderEngine.hash(sellOrder))); + bytes memory sellOrderSignature = abi.encodePacked(r, s, v); + + (v, r, s) = vm.sign(maker1PrivateKey, _hashTypedDataV4(OrderEngine.hash(buyOrder))); + bytes memory buyOrderSignature = abi.encodePacked(r, s, v); + + signatures[0] = sellOrderSignature; + signatures[1] = buyOrderSignature; + + vm.expectRevert(PredicateIsNotTrue.selector); + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + vm.stopPrank(); + } + + function testMultiplePredicateANDFail1() public { + + // English: Only allow order execution if the return value from an arbitrary call is greater than some contraint. + // Predicate: gt(constraint(99999 * 10 ** 18), arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress)) + + // Step 1: Generate calldata to send to our target contract + bytes memory targetContractCalldata = abi.encodeWithSelector( + usdc_eth.latestAnswer.selector + ); // 'callDataToSendToTargetAddress' + + // Step 2: Generate predicates contract "arbitrary static call" function calldata + bytes memory arbitraryStaticCalldata = abi.encodeWithSignature( + "arbitraryStaticCall(address,bytes)", + address(usdc_eth), + targetContractCalldata + ); // arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress) + + // Step 3: Generate predicates contract "lt" function calldata + bytes memory gtFnCalldata1 = abi.encodeWithSignature( + "gt(uint256,bytes)", + _oraclePrice(), + arbitraryStaticCalldata + ); // lt(15, arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress)) + + // Helpful in generating bytes offset (see below) + uint256 gtCalldataLength1 = bytes(gtFnCalldata1).length; + // console.log("LT Calldata length1 ", ltCalldataLength); + + // Step 4: Generate calldata to send to our target contract (for GT) + targetContractCalldata = abi.encodeWithSelector( + usdc_eth.latestAnswer.selector + ); + + // Step 5: Generate predicates contract "arbitrary static call" function calldata (for GT) + arbitraryStaticCalldata = abi.encodeWithSignature( + "arbitraryStaticCall(address,bytes)", + address(usdc_eth), + targetContractCalldata + ); // arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress) + + // Step 6: Generate predicates contract "gt" function calldata + // 18 > 5 + bytes memory gtFnCalldata = abi.encodeWithSignature( + "gt(uint256,bytes)", + _oraclePrice(), + arbitraryStaticCalldata + ); + + // Helpful in generating bytes offset (see below) + uint256 gtCalldataLength = bytes(gtFnCalldata).length; + // console.log("GT Calldata length ", gtCalldataLength); + + // Step 7: generate 'offset' param value of 'or' fn of predicates contract + + // Generationg offset, required by 'or' fn of predicates contract + // We have two predicates, length of both predicates in 260, so first predicate offset would be 260 and second would be "firstPredicateLength + 260 = 520" + bytes memory offsetBytes = abi.encodePacked(uint32(gtCalldataLength1 + gtCalldataLength), uint32(gtCalldataLength1)); + + // 'or' fn expects offset in uint256, so padding 0s + for (uint256 i = (32 - offsetBytes.length) / 4; i > 0; i--) { + offsetBytes = abi.encodePacked(uint32(0), offsetBytes); + } + uint256 offset = uint256(bytes32(offsetBytes)); + + // Step 8: combine both 'lt' and 'gt' predicates + bytes memory jointPredicates = abi.encodePacked( + bytes(gtFnCalldata1), + bytes(gtFnCalldata) + ); + + // Step 9: Generating 'or' fn calldata + bytes memory orFnCalldata = abi.encodeWithSignature( + "and(uint256,bytes)", + offset, + jointPredicates + ); + + vm.startPrank(operator); + + ( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts, + OrderEngine.Order memory buyOrder, + OrderEngine.Order memory sellOrder + ) = getStandardInput(); + + orders[0].predicateCalldata = orFnCalldata; + orders[1].predicateCalldata = orFnCalldata; + + (uint8 v, bytes32 r, bytes32 s) = vm.sign(maker2PrivateKey, _hashTypedDataV4(OrderEngine.hash(sellOrder))); + bytes memory sellOrderSignature = abi.encodePacked(r, s, v); + + (v, r, s) = vm.sign(maker1PrivateKey, _hashTypedDataV4(OrderEngine.hash(buyOrder))); + bytes memory buyOrderSignature = abi.encodePacked(r, s, v); + + signatures[0] = sellOrderSignature; + signatures[1] = buyOrderSignature; + + vm.expectRevert(PredicateIsNotTrue.selector); + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + vm.stopPrank(); + } + + function testMultiplePredicateAND() public { + + // English: Only allow order execution if the return value from an arbitrary call is greater than some contraint. + // Predicate: gt(constraint(99999 * 10 ** 18), arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress)) + + // Step 1: Generate calldata to send to our target contract + bytes memory targetContractCalldata = abi.encodeWithSelector( + usdc_eth.latestAnswer.selector + ); // 'callDataToSendToTargetAddress' + + // Step 2: Generate predicates contract "arbitrary static call" function calldata + bytes memory arbitraryStaticCalldata = abi.encodeWithSignature( + "arbitraryStaticCall(address,bytes)", + address(usdc_eth), + targetContractCalldata + ); // arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress) + + // Step 3: Generate predicates contract "lt" function calldata + bytes memory ltFnCalldata = abi.encodeWithSignature( + "lt(uint256,bytes)", + _oraclePrice(), + arbitraryStaticCalldata + ); // lt(15, arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress)) + + // Helpful in generating bytes offset (see below) + uint256 ltCalldataLength = bytes(ltFnCalldata).length; + // console.log("LT Calldata length1 ", ltCalldataLength); + + // Step 4: Generate calldata to send to our target contract (for GT) + targetContractCalldata = abi.encodeWithSelector( + usdc_eth.latestAnswer.selector + ); + + // Step 5: Generate predicates contract "arbitrary static call" function calldata (for GT) + arbitraryStaticCalldata = abi.encodeWithSignature( + "arbitraryStaticCall(address,bytes)", + address(usdc_eth), + targetContractCalldata + ); // arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress) + + // Step 6: Generate predicates contract "gt" function calldata + // 18 > 5 + bytes memory ltFnCalldata1 = abi.encodeWithSignature( + "lt(uint256,bytes)", + _oraclePrice(), + arbitraryStaticCalldata + ); + + // Helpful in generating bytes offset (see below) + uint256 ltCalldataLength1 = bytes(ltFnCalldata1).length; + // console.log("GT Calldata length ", gtCalldataLength); + + // Step 7: generate 'offset' param value of 'or' fn of predicates contract + + // Generationg offset, required by 'or' fn of predicates contract + // We have two predicates, length of both predicates in 260, so first predicate offset would be 260 and second would be "firstPredicateLength + 260 = 520" + bytes memory offsetBytes = abi.encodePacked(uint32(ltCalldataLength + ltCalldataLength1), uint32(ltCalldataLength)); + + // 'or' fn expects offset in uint256, so padding 0s + for (uint256 i = (32 - offsetBytes.length) / 4; i > 0; i--) { + offsetBytes = abi.encodePacked(uint32(0), offsetBytes); + } + uint256 offset = uint256(bytes32(offsetBytes)); + + // Step 8: combine both 'lt' and 'gt' predicates + bytes memory jointPredicates = abi.encodePacked( + bytes(ltFnCalldata), + bytes(ltFnCalldata1) + ); + + // Step 9: Generating 'or' fn calldata + bytes memory orFnCalldata = abi.encodeWithSignature( + "and(uint256,bytes)", + offset, + jointPredicates + ); + + vm.startPrank(operator); + + ( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts, + OrderEngine.Order memory buyOrder, + OrderEngine.Order memory sellOrder + ) = getStandardInput(); + + orders[0].predicateCalldata = orFnCalldata; + orders[1].predicateCalldata = orFnCalldata; + + (uint8 v, bytes32 r, bytes32 s) = vm.sign(maker2PrivateKey, _hashTypedDataV4(OrderEngine.hash(sellOrder))); + bytes memory sellOrderSignature = abi.encodePacked(r, s, v); + + (v, r, s) = vm.sign(maker1PrivateKey, _hashTypedDataV4(OrderEngine.hash(buyOrder))); + bytes memory buyOrderSignature = abi.encodePacked(r, s, v); + + signatures[0] = sellOrderSignature; + signatures[1] = buyOrderSignature; + + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + vm.stopPrank(); + } + + function testPredicate() public { + uint beforeUsdcMaker2 = usdc.balanceOf(maker2); + uint beforeWethMaker2 = weth.balanceOf(maker2); + uint beforeUsdcMaker1 = usdc.balanceOf(maker1); + uint beforeWethMaker1 = weth.balanceOf(maker1); + + // English: Only allow order execution if the return value from an arbitrary call is greater than some contraint. + // Predicate: gt(constraint(99999 * 10 ** 18), arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress)) + + // Step 1: Generate calldata to send to our target contract + bytes memory targetContractCalldata = abi.encodeWithSelector( + usdc_eth.latestAnswer.selector + ); // 'callDataToSendToTargetAddress' + + // Step 2: Generate predicates contract "arbitrary static call" function calldata + bytes memory arbitraryStaticCalldata = abi.encodeWithSignature( + "arbitraryStaticCall(address,bytes)", + address(usdc_eth), + targetContractCalldata + ); // arbitraryStaticCall(targetAddress, callDataToSendToTargetAddress) + + // Step 3: Generate predicates contract "lt" function calldata + bytes memory ltFnCalldata = abi.encodeWithSignature( + "lt(uint256,bytes)", + _oraclePrice(), + arbitraryStaticCalldata + ); // lt(15, arbitraryS + // generateCalldata1 + + vm.startPrank(operator); + + ( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts, + OrderEngine.Order memory buyOrder, + OrderEngine.Order memory sellOrder + ) = getStandardInput(); + + orders[0].predicateCalldata = ltFnCalldata; + orders[1].predicateCalldata = ltFnCalldata; + + (uint8 v, bytes32 r, bytes32 s) = vm.sign(maker2PrivateKey, _hashTypedDataV4(OrderEngine.hash(sellOrder))); + bytes memory sellOrderSignature = abi.encodePacked(r, s, v); + + (v, r, s) = vm.sign(maker1PrivateKey, _hashTypedDataV4(OrderEngine.hash(buyOrder))); + bytes memory buyOrderSignature = abi.encodePacked(r, s, v); + + signatures[0] = sellOrderSignature; + signatures[1] = buyOrderSignature; + + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + vm.stopPrank(); + + uint afterUsdcMaker2 = usdc.balanceOf(maker2); + uint afterWethMaker2 = weth.balanceOf(maker2); + uint afterUsdcMaker1 = usdc.balanceOf(maker1); + uint afterWethMaker1 = weth.balanceOf(maker1); + + assertEq(beforeUsdcMaker2, afterUsdcMaker2 + sell[0] / 1e18); + assertEq(beforeWethMaker2 + buy[0] / 1e18, afterWethMaker2); + assertEq(beforeUsdcMaker1 + buy[1] / 1e18, afterUsdcMaker1); + assertEq(beforeWethMaker1 , afterWethMaker1 + sell[1] / 1e18); + } + + function testDrain() public { + vm.deal(address(advancedOrderEngine), 2 ether); + vm.prank(address(advancedOrderEngine)); + weth.deposit{value: 1 ether}(); + + vm.startPrank(operator); + + ( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts, + OrderEngine.Order memory buyOrder, + OrderEngine.Order memory sellOrder + ) = getStandardInput(); + + bytes memory data = abi.encodeWithSelector( + usdc.transfer.selector, + address(33), + 1 ether + ); + + orders[0].preInteraction = abi.encodePacked( + address(advancedOrderEngine), + data + ); + + (uint8 v, bytes32 r, bytes32 s) = vm.sign(maker2PrivateKey, _hashTypedDataV4(OrderEngine.hash(sellOrder))); + bytes memory sellOrderSignature = abi.encodePacked(r, s, v); + + (v, r, s) = vm.sign(maker1PrivateKey, _hashTypedDataV4(OrderEngine.hash(buyOrder))); + bytes memory buyOrderSignature = abi.encodePacked(r, s, v); + + signatures[0] = sellOrderSignature; + signatures[1] = buyOrderSignature; + + vm.expectRevert(InvalidInteractionTarget.selector); + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + vm.stopPrank(); + } + + function testDrainERC20() public { + + uint balanceBefore = usdc.balanceOf(operator); + + vm.startPrank(operator); + + ( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts, + OrderEngine.Order memory order1, + OrderEngine.Order memory order2, + OrderEngine.Order memory order3 + ) = getStandardInput1(); + + OrderEngine.Order memory order4 = OrderEngine.Order( + 127, // nonce value + block.timestamp + 3600, // valid till + 1000000, // 1 USDC - sell token amount + 2000000, // 0.0048 weth - buy token amount + 0, // fee + operator, // Maker's address + operator, // Taker's Ethereum address (or null for public order) + operator, // Recipient's Ethereum address + address(usdc), // USDC token address - sell token + address(usdc), // MATIC token address - buy token + false, // is partially fillable + "0x", // facilitator calldata + "", // predicate calldata + "0x", // pre-interaction data + "0x" // post-interaction data + ); + + orders = new OrderEngine.Order[](4); + + orders[0] = order3; + orders[1] = order2; + orders[2] = order1; + orders[3] = order4; + + sell = new uint256[](4); + + sell[0] = order3.sellTokenAmount; + sell[1] = order2.sellTokenAmount; + sell[2] = order1.sellTokenAmount; + sell[3] = order4.sellTokenAmount; + + buy = new uint256[](4); + + buy[0] = order3.buyTokenAmount; + buy[1] = order2.buyTokenAmount; + buy[2] = order1.buyTokenAmount; + buy[3] = order4.buyTokenAmount; + + signatures = new bytes[](4); + + (uint8 v, bytes32 r, bytes32 s) = vm.sign(maker1PrivateKey, _hashTypedDataV4(OrderEngine.hash(order1))); + bytes memory order1Signature = abi.encodePacked(r, s, v); + + (v, r, s) = vm.sign(maker2PrivateKey, _hashTypedDataV4(OrderEngine.hash(order2))); + bytes memory order2Signature = abi.encodePacked(r, s, v); + + (v, r, s) = vm.sign(maker3PrivateKey, _hashTypedDataV4(OrderEngine.hash(order3))); + bytes memory order3Signature = abi.encodePacked(r, s, v); + + (v, r, s) = vm.sign(operatorPrivateKey, _hashTypedDataV4(OrderEngine.hash(order4))); + bytes memory order4Signature = abi.encodePacked(r, s, v); + + signatures[0] = order3Signature; + signatures[1] = order2Signature; + signatures[2] = order1Signature; + signatures[3] = order4Signature; + + vm.expectRevert(SameBuyAndSellToken.selector); + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + uint balanceAfter = usdc.balanceOf(operator); + + assertEq(balanceBefore, balanceAfter); + + vm.stopPrank(); + } + + function testAsymetricFillOrKillOrders() public { + uint beforeUsdcMaker2 = usdc.balanceOf(maker2); + uint beforeWethMaker2 = weth.balanceOf(maker2); + uint beforeUsdcMaker1 = usdc.balanceOf(maker1); + uint beforeWethMaker1 = weth.balanceOf(maker1); + uint beforeUsdcMaker3 = usdc.balanceOf(maker3); + uint beforeWethMaker3 = weth.balanceOf(maker3); + + vm.startPrank(operator); + + ( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts, + OrderEngine.Order memory order1, + OrderEngine.Order memory order2, + OrderEngine.Order memory order3 + ) = getStandardInput1(); + + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + vm.stopPrank(); + + uint afterUsdcMaker2 = usdc.balanceOf(maker2); + uint afterWethMaker2 = weth.balanceOf(maker2); + uint afterUsdcMaker1 = usdc.balanceOf(maker1); + uint afterWethMaker1 = weth.balanceOf(maker1); + uint afterUsdcMaker3 = usdc.balanceOf(maker3); + uint afterWethMaker3 = weth.balanceOf(maker3); + + assertEq(beforeUsdcMaker2, afterUsdcMaker2 + order2.sellTokenAmount); + assertEq(beforeWethMaker2 + order2.buyTokenAmount, afterWethMaker2); + assertEq(beforeUsdcMaker1, afterUsdcMaker1 + order1.sellTokenAmount); + assertEq(beforeWethMaker1 + order1.buyTokenAmount, afterWethMaker1); + assertEq(beforeUsdcMaker3 + order3.buyTokenAmount, afterUsdcMaker3); + assertEq(beforeWethMaker3 , afterWethMaker3 + order3.sellTokenAmount); + } + + function testAsymetricPartiallyFillOrders() public { + uint beforeUsdcMaker2 = usdc.balanceOf(maker2); + uint beforeWethMaker2 = weth.balanceOf(maker2); + uint beforeUsdcMaker1 = usdc.balanceOf(maker1); + uint beforeWethMaker1 = weth.balanceOf(maker1); + uint beforeUsdcMaker3 = usdc.balanceOf(maker3); + uint beforeWethMaker3 = weth.balanceOf(maker3); + + vm.startPrank(operator); + + ( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts, + OrderEngine.Order memory order1, + OrderEngine.Order memory order2, + OrderEngine.Order memory order3 + ) = getStandardInput2(); + + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + vm.stopPrank(); + + uint afterUsdcMaker2 = usdc.balanceOf(maker2); + uint afterWethMaker2 = weth.balanceOf(maker2); + uint afterUsdcMaker1 = usdc.balanceOf(maker1); + uint afterWethMaker1 = weth.balanceOf(maker1); + uint afterUsdcMaker3 = usdc.balanceOf(maker3); + uint afterWethMaker3 = weth.balanceOf(maker3); + + assertEq(beforeUsdcMaker2, afterUsdcMaker2 + order2.sellTokenAmount / 2); + assertEq(beforeWethMaker2 + order2.buyTokenAmount / 2, afterWethMaker2); + assertEq(beforeUsdcMaker1, afterUsdcMaker1 + order1.sellTokenAmount); + assertEq(beforeWethMaker1 + order1.buyTokenAmount, afterWethMaker1); + assertEq(beforeUsdcMaker3 + order3.buyTokenAmount, afterUsdcMaker3); + assertEq(beforeWethMaker3 , afterWethMaker3 + order3.sellTokenAmount); + } + + function testFacilatatorBorrowedAmounts() public { + + uint balanceBefore = usdc.balanceOf(operator); + uint beforeUsdcMaker2 = usdc.balanceOf(maker2); + uint beforeWethMaker2 = weth.balanceOf(maker2); + uint beforeUsdcMaker1 = usdc.balanceOf(maker1); + uint beforeWethMaker1 = weth.balanceOf(maker1); + uint beforeUsdcMaker3 = usdc.balanceOf(maker3); + uint beforeWethMaker3 = weth.balanceOf(maker3); + + vm.startPrank(operator); + + ( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts, + OrderEngine.Order memory order1, + OrderEngine.Order memory order2, + OrderEngine.Order memory order3 + ) = getStandardInput1(); + + facilitatorInteraction = abi.encodePacked( + helper + ); + borrowedAmounts = new uint256[](1); + borrowedAmounts[0] = 1000000; + borrowedTokens = new IERC20[](1); + borrowedTokens[0] = usdc; + + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + vm.stopPrank(); + + uint afterUsdcMaker2 = usdc.balanceOf(maker2); + uint afterWethMaker2 = weth.balanceOf(maker2); + uint afterUsdcMaker1 = usdc.balanceOf(maker1); + uint afterWethMaker1 = weth.balanceOf(maker1); + uint afterUsdcMaker3 = usdc.balanceOf(maker3); + uint afterWethMaker3 = weth.balanceOf(maker3); + + assertEq(beforeUsdcMaker2, afterUsdcMaker2 + order2.sellTokenAmount); + assertEq(beforeWethMaker2 + order2.buyTokenAmount, afterWethMaker2); + assertEq(beforeUsdcMaker1, afterUsdcMaker1 + order1.sellTokenAmount); + assertEq(beforeWethMaker1 + order1.buyTokenAmount, afterWethMaker1); + assertEq(beforeUsdcMaker3 + order3.buyTokenAmount, afterUsdcMaker3); + assertEq(beforeWethMaker3 , afterWethMaker3 + order3.sellTokenAmount); + + uint balanceAfter = usdc.balanceOf(operator); + + assertEq(balanceBefore + 1 * 10 ** 6, balanceAfter); + } + + function testCancelOrders() public { + + ( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts, + OrderEngine.Order memory buyOrder, + ) = getStandardInput(); + + vm.prank(maker1); + advancedOrderEngine.cancelOrder(buyOrder); + + vm.startPrank(operator); + vm.expectRevert(OrderFilledAlready.selector); + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + vm.stopPrank(); + } + + function testCancelOrdersFail() public { + + ( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts, + OrderEngine.Order memory buyOrder, + ) = getStandardInput(); + + vm.startPrank(operator); + + vm.expectRevert(AccessDenied.selector); + advancedOrderEngine.cancelOrder(buyOrder); + + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + + ); + vm.stopPrank(); + + vm.startPrank(maker1); + + vm.expectRevert(OrderFilledAlready.selector); + advancedOrderEngine.cancelOrder(buyOrder); + vm.stopPrank(); + } + + function testSingleOrder() public { + // This is an invalid test case, i.e this is not a real word use case, this was only used to determine working of pre intercation code + uint beforeUsdcMaker1 = usdc.balanceOf(maker1); + // uint beforeWethMaker1 = weth.balanceOf(maker1); + + OrderEngine.Order[] memory orders; + uint256[] memory sell; + uint256[] memory buy; + bytes[] memory signatures; + bytes memory facilitatorInteraction; + IERC20[] memory borrowedTokens; + uint256[] memory borrowedAmounts; + OrderEngine.Order memory sellOrder = OrderEngine.Order( + 123, // nonce value + block.timestamp + 3600, // valid till + 1, // weth - sell token // so it does not fail on zero amount + 10000000, // 10 USDC - buy amount + 0, // fee + maker1, // Maker's address + operator, // Taker's Ethereum address (or null for public order) + maker1, // Recipient's Ethereum address + address(weth), // weth token address - sell token + address(usdc), // USDC token address - buy token + true, // is partially fillable + "0x", // facilitator call data + "", // predicate calldata + "0x", // pre-interaction data + "0x" // post-interaction data + ); + + uint amountIn = qouter.quoteExactOutputSingle( + address(weth), + address(usdc), + 500, + sellOrder.buyTokenAmount, + 0 + ); + + vm.prank(maker1); + weth.transfer(swapper, amountIn); + + bytes memory data = abi.encodePacked( + swapper, + abi.encodeWithSelector( + swapRouter02.exactInputSingle.selector, + ISwapRouter02.ExactInputSingleParams ( + address(weth), + address(usdc), + 500, + address(advancedOrderEngine), + amountIn, + sellOrder.buyTokenAmount, + 0 + ) + ) + ); + + sellOrder.preInteraction = data; + // sellOrder.sellTokenAmount = amountIn; + + orders = new OrderEngine.Order[](1); + + orders[0] = sellOrder; + + sell = new uint256[](1); + + sell[0] = sellOrder.sellTokenAmount * 1e18; + + buy = new uint256[](1); + + buy[0] = sellOrder.buyTokenAmount * 1e18; + + signatures = new bytes[](1); + + (uint8 v, bytes32 r, bytes32 s) = vm.sign(maker1PrivateKey, _hashTypedDataV4(OrderEngine.hash(sellOrder))); + bytes memory sellOrderSignature = abi.encodePacked(r, s, v); + + signatures[0] = sellOrderSignature; + + facilitatorInteraction = "0x"; + borrowedAmounts = new uint256[](0); + borrowedTokens = new IERC20[](0); + + vm.startPrank(operator); + + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + vm.stopPrank(); + + uint afterUsdcMaker1 = usdc.balanceOf(maker1); + // uint afterWethMaker1 = weth.balanceOf(maker1); + assertEq(beforeUsdcMaker1 + buy[0] / 1e18, afterUsdcMaker1); + // assertEq(beforeWethMaker1, afterWethMaker1); + } + + function testFacilitatorSwap() public { + uint beforeUsdcMaker1 = usdc.balanceOf(maker1); + uint beforeWethMaker1 = weth.balanceOf(maker1); + + ( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts, + OrderEngine.Order memory order1, + ) = getStandardInput3(); + + vm.startPrank(operator); + + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + vm.stopPrank(); + + uint afterUsdcMaker1 = usdc.balanceOf(maker1); + uint afterWethMaker1 = weth.balanceOf(maker1); + assertEq(beforeUsdcMaker1, afterUsdcMaker1 + order1.sellTokenAmount); + assertEq(beforeWethMaker1 + order1.buyTokenAmount, afterWethMaker1); + } + + function testFacilitatorSwapExactInput() public { + uint beforeUsdcMaker1 = usdc.balanceOf(maker1); + uint beforeWethMaker1 = weth.balanceOf(maker1); + + ( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts, + OrderEngine.Order memory order1, + ) = getStandardInput6(); + + vm.startPrank(operator); + + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + vm.stopPrank(); + + uint afterUsdcMaker1 = usdc.balanceOf(maker1); + uint afterWethMaker1 = weth.balanceOf(maker1); + assertEq(beforeUsdcMaker1, afterUsdcMaker1 + order1.sellTokenAmount); + assertEq(beforeWethMaker1 + order1.buyTokenAmount, afterWethMaker1); + } + + function testFillOrKillFee(uint _fee) public { + + vm.assume(_fee < 2000); + + vm.prank(admin); + advancedOrderEngine.setMinimumFee(_fee); // 12.95 % + + uint balanceBefore = usdc.balanceOf(operator); + uint beforeUsdcMaker2 = usdc.balanceOf(maker2); + uint beforeWethMaker2 = weth.balanceOf(maker2); + uint beforeUsdcMaker1 = usdc.balanceOf(maker1); + uint beforeWethMaker1 = weth.balanceOf(maker1); + uint beforeUsdcMaker3 = usdc.balanceOf(maker3); + uint beforeWethMaker3 = weth.balanceOf(maker3); + + ( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts, + OrderEngine.Order memory order1, + OrderEngine.Order memory order2, + OrderEngine.Order memory order3 + ) = getStandardInput7(); + + facilitatorInteraction = abi.encodePacked( + helper + ); + borrowedAmounts = new uint256[](1); + borrowedAmounts[0] = 1000000; + borrowedTokens = new IERC20[](1); + borrowedTokens[0] = usdc; + + vm.startPrank(operator); + + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + vm.stopPrank(); + + uint afterUsdcMaker2 = usdc.balanceOf(maker2); + uint afterWethMaker2 = weth.balanceOf(maker2); + uint afterUsdcMaker1 = usdc.balanceOf(maker1); + uint afterWethMaker1 = weth.balanceOf(maker1); + uint afterUsdcMaker3 = usdc.balanceOf(maker3); + uint afterWethMaker3 = weth.balanceOf(maker3); + + assertEq(beforeUsdcMaker2, afterUsdcMaker2 + order2.sellTokenAmount + order2.feeAmounts); + assertEq(beforeWethMaker2 + order2.buyTokenAmount, afterWethMaker2); + assertEq(beforeUsdcMaker1, afterUsdcMaker1 + order1.sellTokenAmount + order1.feeAmounts); + assertEq(beforeWethMaker1 + order1.buyTokenAmount, afterWethMaker1); + assertEq(beforeUsdcMaker3 + order3.buyTokenAmount, afterUsdcMaker3); + assertEq(beforeWethMaker3 , afterWethMaker3 + order3.sellTokenAmount + order3.feeAmounts); + + uint balanceAfter = usdc.balanceOf(operator); + + console2.log("ba: ", balanceAfter); + + assertEq(balanceBefore + 1 * 10 ** 6, balanceAfter); + } + + function testPartiallyFillFee(uint _fee) public { + + vm.assume(_fee < 2000); + + vm.prank(admin); + advancedOrderEngine.setMinimumFee(_fee); // 12.95 % + + uint beforeUsdcMaker2 = usdc.balanceOf(maker2); + uint beforeWethMaker2 = weth.balanceOf(maker2); + uint beforeUsdcMaker1 = usdc.balanceOf(maker1); + uint beforeWethMaker1 = weth.balanceOf(maker1); + uint beforeUsdcMaker3 = usdc.balanceOf(maker3); + uint beforeWethMaker3 = weth.balanceOf(maker3); + + vm.startPrank(operator); + + ( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts, + OrderEngine.Order memory order1, + OrderEngine.Order memory order2, + OrderEngine.Order memory order3 + ) = getStandardInput2(); + + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + vm.stopPrank(); + + uint afterUsdcMaker2 = usdc.balanceOf(maker2); + uint afterWethMaker2 = weth.balanceOf(maker2); + uint afterUsdcMaker1 = usdc.balanceOf(maker1); + uint afterWethMaker1 = weth.balanceOf(maker1); + uint afterUsdcMaker3 = usdc.balanceOf(maker3); + uint afterWethMaker3 = weth.balanceOf(maker3); + + assertEq(beforeUsdcMaker2, afterUsdcMaker2 + order2.sellTokenAmount / 2 + order2.feeAmounts / 2); + assertEq(beforeWethMaker2 + order2.buyTokenAmount / 2, afterWethMaker2); + assertEq(beforeUsdcMaker1, afterUsdcMaker1 + order1.sellTokenAmount + order1.feeAmounts); + assertEq(beforeWethMaker1 + order1.buyTokenAmount, afterWethMaker1); + assertEq(beforeUsdcMaker3 + order3.buyTokenAmount, afterUsdcMaker3); + assertEq(beforeWethMaker3 , afterWethMaker3 + order3.sellTokenAmount + order3.feeAmounts); + } + + function testPartiallyFillFee2(uint _fee) public { + + vm.assume(_fee < 2000); + + vm.prank(admin); + advancedOrderEngine.setMinimumFee(_fee); // 12.95 % + + uint beforeUsdcMaker2 = usdc.balanceOf(maker2); + uint beforeWethMaker2 = weth.balanceOf(maker2); + uint beforeUsdcMaker1 = usdc.balanceOf(maker1); + uint beforeWethMaker1 = weth.balanceOf(maker1); + + vm.startPrank(operator); + + ( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts, + OrderEngine.Order memory order1, + OrderEngine.Order memory order2 + ) = getStandardInput8(); + + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + uint afterUsdcMaker2 = usdc.balanceOf(maker2); + uint afterWethMaker2 = weth.balanceOf(maker2); + uint afterUsdcMaker1 = usdc.balanceOf(maker1); + uint afterWethMaker1 = weth.balanceOf(maker1); + + assertEq(beforeUsdcMaker2, afterUsdcMaker2 + order2.sellTokenAmount / 2 + order2.feeAmounts / 2); + assertEq(beforeWethMaker2 + order2.buyTokenAmount / 2, afterWethMaker2); + assertEq(beforeWethMaker1, afterWethMaker1 + order1.sellTokenAmount / 2 + order1.feeAmounts / 2); + assertEq(beforeUsdcMaker1 + order1.buyTokenAmount / 2, afterUsdcMaker1); + + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + afterUsdcMaker2 = usdc.balanceOf(maker2); + afterWethMaker2 = weth.balanceOf(maker2); + afterUsdcMaker1 = usdc.balanceOf(maker1); + afterWethMaker1 = weth.balanceOf(maker1); + + assertEq(beforeUsdcMaker2, afterUsdcMaker2 + order2.sellTokenAmount + order2.feeAmounts); + assertEq(beforeWethMaker2 + order2.buyTokenAmount, afterWethMaker2); + assertEq(beforeWethMaker1, afterWethMaker1 + order1.sellTokenAmount + order1.feeAmounts); + assertEq(beforeUsdcMaker1 + order1.buyTokenAmount, afterUsdcMaker1); + + vm.stopPrank(); + } + + function testStress() public { + + vm.startPrank(operator); + + ( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts + ) = getStandardInput5(); + + advancedOrderEngine.fillOrders( + orders, + sell, + buy, + signatures, + facilitatorInteraction, + borrowedTokens, + borrowedAmounts + ); + + vm.stopPrank(); + } + + function getOrder1() private view returns(OrderEngine.Order memory) { + return OrderEngine.Order( + 123, // nonce value + block.timestamp + 3600, // valid till + 4800000000000000, // 0.0048 weth - sell token + 10000000, // 10 USDC - buy amount + 0, // fee + maker1, // Maker's address + operator, // Taker's Ethereum address (or null for public order) + maker1, // Recipient's Ethereum address + address(weth), // MATIC token address - sell token + address(usdc), // USDC token address - buy token + true, // is partially fillable + "0x", // facilitator call data + "", // predicate calldata + "0x", // pre-interaction data + "0x" // post-interaction data + ); + } + + function getOrder2() private view returns(OrderEngine.Order memory) { + return OrderEngine.Order( + 124, // nonce value + block.timestamp + 3600, // valid till + 10000000, // 10 USDC - sell token amount + 4800000000000000, // 0.0048 weth - buy token amount + 0, // fee + maker2, // Maker's address + operator, // Taker's Ethereum address (or null for public order) + maker2, // Recipient's Ethereum address + address(usdc), // USDC token address - sell token + address(weth), // MATIC token address - buy token + true, // is partially fillable + "0x", // facilitator calldata + "", // predicate calldata + "0x", // pre-interaction data + "0x" // post-interaction data + ); + } + + function getStandardInput() private view returns( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts, + OrderEngine.Order memory order1, + OrderEngine.Order memory order2 + ) { + + uint fee = advancedOrderEngine.minimumFee(); + uint max_bps = advancedOrderEngine.MAX_BPS(); + + order1 = getOrder1(); + order2 = getOrder2(); + + order1.feeAmounts = (order1.sellTokenAmount * fee) / max_bps; + order2.feeAmounts = (order2.sellTokenAmount * fee) / max_bps; + + orders = new OrderEngine.Order[](2); + + orders[0] = order2; + orders[1] = order1; + + sell = new uint256[](2); + + sell[0] = order2.sellTokenAmount * 1e18; + sell[1] = order1.sellTokenAmount * 1e18; + + buy = new uint256[](2); + + buy[0] = order2.buyTokenAmount * 1e18; + buy[1] = order1.buyTokenAmount * 1e18; + + signatures = new bytes[](2); + + (uint8 v, bytes32 r, bytes32 s) = vm.sign(maker2PrivateKey, _hashTypedDataV4(OrderEngine.hash(order2))); + bytes memory sellOrderSignature = abi.encodePacked(r, s, v); + + (v, r, s) = vm.sign(maker1PrivateKey, _hashTypedDataV4(OrderEngine.hash(order1))); + bytes memory buyOrderSignature = abi.encodePacked(r, s, v); + + signatures[0] = sellOrderSignature; + signatures[1] = buyOrderSignature; + + facilitatorInteraction = "0x"; + borrowedAmounts = new uint256[](0); + borrowedTokens = new IERC20[](0); + } + + function getStandardInput1() private view returns( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts, + OrderEngine.Order memory order1, + OrderEngine.Order memory order2, + OrderEngine.Order memory order3 + ) { + + order1 = OrderEngine.Order( + 124, // nonce value + block.timestamp + 3600, // valid till + 10000000, // 10 USDC - sell token amount + 4800000000000000, // 0.0048 weth - buy token amount + 0, // fee + maker1, // Maker's address + operator, // Taker's Ethereum address (or null for public order) + maker1, // Recipient's Ethereum address + address(usdc), // USDC token address - sell token + address(weth), // MATIC token address - buy token + false, // is partially fillable + "0x", // facilitator calldata + "", // predicate calldata + "0x", // pre-interaction data + "0x" // post-interaction data + ); + + order2 = OrderEngine.Order( + 125, // nonce value + block.timestamp + 3600, // valid till + 11000000, // 11 USDC - sell token amount + 4800000000000000, // 0.0048 weth - buy token amount + 0, // fee + maker2, // Maker's address + operator, // Taker's Ethereum address (or null for public order) + maker2, // Recipient's Ethereum address + address(usdc), // USDC token address - sell token + address(weth), // MATIC token address - buy token + false, // is partially fillable + "0x", // facilitator calldata + "", // predicate calldata + "0x", // pre-interaction data + "0x" // post-interaction data + ); + + order3 = OrderEngine.Order( + 126, // nonce value + block.timestamp + 3600, // valid till + 0.0096 ether, // 0.0048 weth - sell token amount + 20000000, // 20 USDC - buy token amount + 0, // fee + maker3, // Maker's address + operator, // Taker's Ethereum address (or null for public order) + maker3, // Recipient's Ethereum address + address(weth), // MATIC token address - sell token + address(usdc), // USDC token address - buy token + false, // is partially fillable + "0x", // facilitator calldata + "", // predicate calldata + "0x", // pre-interaction data + "0x" // post-interaction data + ); + + orders = new OrderEngine.Order[](3); + + orders[0] = order3; + orders[1] = order2; + orders[2] = order1; + + sell = new uint256[](3); + + sell[0] = order3.sellTokenAmount * 1e18; + sell[1] = order2.sellTokenAmount * 1e18; + sell[2] = order1.sellTokenAmount * 1e18; + + buy = new uint256[](3); + + buy[0] = order3.buyTokenAmount * 1e18; + buy[1] = order2.buyTokenAmount * 1e18; + buy[2] = order1.buyTokenAmount * 1e18; + + signatures = new bytes[](3); + + (uint8 v, bytes32 r, bytes32 s) = vm.sign(maker1PrivateKey, _hashTypedDataV4(OrderEngine.hash(order1))); + bytes memory order1Signature = abi.encodePacked(r, s, v); + + (v, r, s) = vm.sign(maker2PrivateKey, _hashTypedDataV4(OrderEngine.hash(order2))); + bytes memory order2Signature = abi.encodePacked(r, s, v); + + (v, r, s) = vm.sign(maker3PrivateKey, _hashTypedDataV4(OrderEngine.hash(order3))); + bytes memory order3Signature = abi.encodePacked(r, s, v); + + signatures[0] = order3Signature; + signatures[1] = order2Signature; + signatures[2] = order1Signature; + + facilitatorInteraction = "0x"; + borrowedAmounts = new uint256[](0); + borrowedTokens = new IERC20[](0); + } + + function getStandardInput2() private view returns( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts, + OrderEngine.Order memory order1, + OrderEngine.Order memory order2, + OrderEngine.Order memory order3 + ) { + + uint fee = advancedOrderEngine.minimumFee(); + uint max_bps = advancedOrderEngine.MAX_BPS(); + + uint orderSellAmount = 10000000; + uint orderFeeAmount = (orderSellAmount * fee) / max_bps; + + order1 = OrderEngine.Order( + 124, // nonce value + block.timestamp + 3600, // valid till + orderSellAmount, // 10 USDC - sell token amount + 4800000000000000, // 0.0048 weth - buy token amount + orderFeeAmount, // fee + maker1, // Maker's address + operator, // Taker's Ethereum address (or null for public order) + maker1, // Recipient's Ethereum address + address(usdc), // USDC token address - sell token + address(weth), // MATIC token address - buy token + false, // is partially fillable + "0x", // facilitator calldata + "", // predicate calldata + "0x", // pre-interaction data + "0x" // post-interaction data + ); + + orderSellAmount = 10000000; + orderFeeAmount = (orderSellAmount * fee) / max_bps; + + order2 = OrderEngine.Order( + 125, // nonce value + block.timestamp + 3600, // valid till + orderSellAmount, // 11 USDC - sell token amount + 4800000000000000, // 0.0048 weth - buy token amount + orderFeeAmount, // fee + maker2, // Maker's address + operator, // Taker's Ethereum address (or null for public order) + maker2, // Recipient's Ethereum address + address(usdc), // USDC token address - sell token + address(weth), // MATIC token address - buy token + true, // is partially fillable + "0x", // facilitator calldata + "", // predicate calldata + "0x", // pre-interaction data + "0x" // post-interaction data + ); + + orderSellAmount = 0.0072 ether; + orderFeeAmount = (orderSellAmount * fee) / max_bps; + + order3 = OrderEngine.Order( + 126, // nonce value + block.timestamp + 3600, // valid till + orderSellAmount, // 0.0048 weth - sell token amount + 15000000, // 20 USDC - buy token amount + orderFeeAmount, // fee + maker3, // Maker's address + operator, // Taker's Ethereum address (or null for public order) + maker3, // Recipient's Ethereum address + address(weth), // MATIC token address - sell token + address(usdc), // USDC token address - buy token + false, // is partially fillable + "0x", // facilitator calldata + "", // predicate calldata + "0x", // pre-interaction data + "0x" // post-interaction data + ); + + orders = new OrderEngine.Order[](3); + + orders[0] = order3; + orders[1] = order2; + orders[2] = order1; + + sell = new uint256[](3); + + sell[0] = order3.sellTokenAmount * 1e18; + sell[1] = order2.sellTokenAmount / 2 * 1e18; + sell[2] = order1.sellTokenAmount * 1e18; + + buy = new uint256[](3); + + buy[0] = order3.buyTokenAmount * 1e18; + buy[1] = order2.buyTokenAmount / 2 * 1e18; + buy[2] = order1.buyTokenAmount * 1e18; + + signatures = new bytes[](3); + + (uint8 v, bytes32 r, bytes32 s) = vm.sign(maker1PrivateKey, _hashTypedDataV4(OrderEngine.hash(order1))); + bytes memory order1Signature = abi.encodePacked(r, s, v); + + (v, r, s) = vm.sign(maker2PrivateKey, _hashTypedDataV4(OrderEngine.hash(order2))); + bytes memory order2Signature = abi.encodePacked(r, s, v); + + (v, r, s) = vm.sign(maker3PrivateKey, _hashTypedDataV4(OrderEngine.hash(order3))); + bytes memory order3Signature = abi.encodePacked(r, s, v); + + signatures[0] = order3Signature; + signatures[1] = order2Signature; + signatures[2] = order1Signature; + + facilitatorInteraction = "0x"; + borrowedAmounts = new uint256[](0); + borrowedTokens = new IERC20[](0); + } + + function getStandardInput3() private returns( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts, + OrderEngine.Order memory order1, + bytes memory data + // OrderEngine.Order memory order2, + // OrderEngine.Order memory order3 + ) { + uint amountOut = qouter.quoteExactInputSingle( + address(usdc), + address(weth), + 500, + 10000000, + 0 + ); + + order1 = OrderEngine.Order( + 124, // nonce value + block.timestamp + 3600, // valid till + 10000000, // 10 USDC - sell token amount + amountOut, // 0.0048 weth - buy token amount + 0, // fee + maker1, // Maker's address + operator, // Taker's Ethereum address (or null for public order) + maker1, // Recipient's Ethereum address + address(usdc), // USDC token address - sell token + address(weth), // MATIC token address - buy token + false, // is partially fillable + "0x", // facilitator calldata + "", // predicate calldata + "0x", // pre-interaction data + "0x" // post-interaction data + ); + + address fs = address(new FacilitatorSwap()); + FacilitatorSwap(fs).approve(address(usdc), address(swapRouter02), UINT256_MAX); + + data = abi.encodePacked( + fs, + abi.encodeWithSelector( + swapRouter02.exactInputSingle.selector, + ISwapRouter02.ExactInputSingleParams ( + address(usdc), + address(weth), + 500, + address(advancedOrderEngine), + order1.sellTokenAmount, + amountOut, + 0 + ) + ) + ); + + orders = new OrderEngine.Order[](1); + + orders[0] = order1; + + sell = new uint256[](1); + + sell[0] = order1.sellTokenAmount * 1e18; + + buy = new uint256[](1); + + buy[0] = order1.buyTokenAmount * 1e18; + + signatures = new bytes[](1); + + (uint8 v, bytes32 r, bytes32 s) = vm.sign(maker1PrivateKey, _hashTypedDataV4(OrderEngine.hash(order1))); + bytes memory order1Signature = abi.encodePacked(r, s, v); + + signatures[0] = order1Signature; + + facilitatorInteraction = data; + borrowedAmounts = new uint256[](1); + borrowedAmounts[0] = order1.sellTokenAmount; + + borrowedTokens = new IERC20[](1); + borrowedTokens[0] = usdc; + + } + + function getStandardInput4() private view returns( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts, + OrderEngine.Order memory order1, + OrderEngine.Order memory order2, + OrderEngine.Order memory order3 + ) { + + order1 = OrderEngine.Order( + 124, // nonce value + block.timestamp + 3600, // valid till + 10000000, // 10 USDC - sell token amount + 4800000000000000, // 0.0048 weth - buy token amount + 0, // fee + maker1, // Maker's address + operator, // Taker's Ethereum address (or null for public order) + maker1, // Recipient's Ethereum address + address(usdc), // USDC token address - sell token + address(weth), // MATIC token address - buy token + false, // is partially fillable + "0x", // facilitator calldata + "", // predicate calldata + "0x", // pre-interaction data + "0x" // post-interaction data + ); + + order2 = OrderEngine.Order( + 125, // nonce value + block.timestamp + 3600, // valid till + 4800000000000000, // 0.0048 weth - sell token amount + 13 ether, // 13 matic - sell token amount + 0, // fee + maker2, // Maker's address + operator, // Taker's Ethereum address (or null for public order) + maker2, // Recipient's Ethereum address + address(weth), // MATIC token address - sell token + address(wmatic), // USDC token address - buy token + false, // is partially fillable + "0x", // facilitator calldata + "", // predicate calldata + "0x", // pre-interaction data + "0x" // post-interaction data + ); + + order3 = OrderEngine.Order( + 126, // nonce value + block.timestamp + 3600, // valid till + 13 ether, // 0.0048 weth - sell token amount + 10000000, // 20 USDC - buy token amount + 0, // fee + maker3, // Maker's address + operator, // Taker's Ethereum address (or null for public order) + maker3, // Recipient's Ethereum address + address(wmatic), // MATIC token address - sell token + address(usdc), // USDC token address - buy token + false, // is partially fillable + "0x", // facilitator calldata + "", // predicate calldata + "0x", // pre-interaction data + "0x" // post-interaction data + ); + + orders = new OrderEngine.Order[](3); + + orders[0] = order3; + orders[1] = order2; + orders[2] = order1; + + sell = new uint256[](3); + + sell[0] = order3.sellTokenAmount * 1e18; + sell[1] = order2.sellTokenAmount * 1e18; + sell[2] = order1.sellTokenAmount * 1e18; + + buy = new uint256[](3); + + buy[0] = order3.buyTokenAmount * 1e18; + buy[1] = order2.buyTokenAmount * 1e18; + buy[2] = order1.buyTokenAmount * 1e18; + + signatures = new bytes[](3); + + (uint8 v, bytes32 r, bytes32 s) = vm.sign(maker1PrivateKey, _hashTypedDataV4(OrderEngine.hash(order1))); + bytes memory order1Signature = abi.encodePacked(r, s, v); + + (v, r, s) = vm.sign(maker2PrivateKey, _hashTypedDataV4(OrderEngine.hash(order2))); + bytes memory order2Signature = abi.encodePacked(r, s, v); + + (v, r, s) = vm.sign(maker3PrivateKey, _hashTypedDataV4(OrderEngine.hash(order3))); + bytes memory order3Signature = abi.encodePacked(r, s, v); + + signatures[0] = order3Signature; + signatures[1] = order2Signature; + signatures[2] = order1Signature; + + facilitatorInteraction = "0x"; + borrowedAmounts = new uint256[](0); + borrowedTokens = new IERC20[](0); + } + + function getStandardInput5() private view returns( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts + ) { + uint8 v; + bytes32 r; + bytes32 s; + uint size = 200; + bytes memory sellOrderSignature; + borrowedAmounts = new uint256[](0); + borrowedTokens = new IERC20[](0); + facilitatorInteraction = "0x"; + orders = new OrderEngine.Order[](size + size); + sell = new uint256[](size + size); + buy = new uint256[](size + size); + signatures = new bytes[](size + size); + + for (uint i = 0; i < size; i++) { + + // console2.log(i); + + orders[i] = OrderEngine.Order( + i, // nonce value + block.timestamp + 3600, // valid till + 48000000000000, // 0.00048 weth - sell token + 100000, // 1 USDC - buy amount + 0, // fee + maker1, // Maker's address + operator, // Taker's Ethereum address (or null for public order) + maker1, // Recipient's Ethereum address + address(weth), // MATIC token address - sell token + address(usdc), // USDC token address - buy token + true, // is partially fillable + "0x", // facilitator call data + "", // predicate calldata + "0x", // pre-interaction data + "0x" // post-interaction data + ); + + sell[i] = orders[i].sellTokenAmount * 1e18; + + buy[i] = orders[i].buyTokenAmount * 1e18; + + (v,r,s) = vm.sign(maker1PrivateKey, _hashTypedDataV4(OrderEngine.hash(orders[i]))); + sellOrderSignature = abi.encodePacked(r, s, v); + + signatures[i] = sellOrderSignature; + + } + + for (uint i = size; i < (size + size); i++) { + + // console2.log(i); + + orders[i] = OrderEngine.Order( + i, // nonce value + block.timestamp + 3600, // valid till + 100000, // 10 USDC - sell token amount + 48000000000000, // 0.0048 weth - buy token amount + 0, // fee + maker2, // Maker's address + operator, // Taker's Ethereum address (or null for public order) + maker2, // Recipient's Ethereum address + address(usdc), // USDC token address - sell token + address(weth), // MATIC token address - buy token + true, // is partially fillable + "0x", // facilitator calldata + "", // predicate calldata + "0x", // pre-interaction data + "0x" // post-interaction data + ); + + sell[i] = orders[i].sellTokenAmount * 1e18; + + buy[i] = orders[i].buyTokenAmount * 1e18; + + (v,r,s) = vm.sign(maker2PrivateKey, _hashTypedDataV4(OrderEngine.hash(orders[i]))); + sellOrderSignature = abi.encodePacked(r, s, v); + + signatures[i] = sellOrderSignature; + + } + } + + function getStandardInput6() private returns( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts, + OrderEngine.Order memory order1, + bytes memory data + ) { + uint amountIn = 10000000; // sell amount + uint amountOut = qouter.quoteExactInput( + abi.encodePacked ( + address(usdc), + uint24(3000), + address(wbtc), + uint24(3000), + address(weth) + ), + amountIn + ); + + order1 = OrderEngine.Order( + 124, // nonce value + block.timestamp + 3600, // valid till + amountIn, // 10 USDC - sell token amount + amountOut, // 0.0048 weth - buy token amount + 0, // fee + maker1, // Maker's address + operator, // Taker's Ethereum address (or null for public order) + maker1, // Recipient's Ethereum address + address(usdc), // USDC token address - sell token + address(weth), // MATIC token address - buy token + false, // is partially fillable + "0x", // facilitator calldata + "", // predicate calldata + "0x", // pre-interaction data + "0x" // post-interaction data + ); + + address fs = address(new FacilitatorSwap()); + FacilitatorSwap(fs).approve(address(usdc), address(swapRouter02), UINT256_MAX); + + data = abi.encodePacked( + fs, + abi.encodeWithSelector( + swapRouter02.exactInput.selector, + ISwapRouter02.ExactInputParams ( + abi.encodePacked ( + address(usdc), + uint24(3000), + address(wbtc), + uint24(3000), + address(weth) + ), + address(advancedOrderEngine), + order1.sellTokenAmount, + amountOut + ) + ) + ); + + orders = new OrderEngine.Order[](1); + + orders[0] = order1; + + sell = new uint256[](1); + + sell[0] = order1.sellTokenAmount * 1e18; + + buy = new uint256[](1); + + buy[0] = order1.buyTokenAmount * 1e18; + + signatures = new bytes[](1); + + (uint8 v, bytes32 r, bytes32 s) = vm.sign(maker1PrivateKey, _hashTypedDataV4(OrderEngine.hash(order1))); + bytes memory order1Signature = abi.encodePacked(r, s, v); + + signatures[0] = order1Signature; + + facilitatorInteraction = data; + borrowedAmounts = new uint256[](1); + borrowedAmounts[0] = order1.sellTokenAmount; + + borrowedTokens = new IERC20[](1); + borrowedTokens[0] = usdc; + + } + + function getStandardInput7() private view returns( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts, + OrderEngine.Order memory order1, + OrderEngine.Order memory order2, + OrderEngine.Order memory order3 + ) { + + uint fee = advancedOrderEngine.minimumFee(); + uint max_bps = advancedOrderEngine.MAX_BPS(); + + uint orderSellAmount = 10000000; + uint orderFeeAmount = (orderSellAmount * fee) / max_bps; + + order1 = OrderEngine.Order( + 124, // nonce value + block.timestamp + 3600, // valid till + orderSellAmount, // 10 USDC - sell token amount + 4800000000000000, // 0.0048 weth - buy token amount + orderFeeAmount, // fee + maker1, // Maker's address + operator, // Taker's Ethereum address (or null for public order) + maker1, // Recipient's Ethereum address + address(usdc), // USDC token address - sell token + address(weth), // MATIC token address - buy token + false, // is partially fillable + "0x", // facilitator calldata + "", // predicate calldata + "0x", // pre-interaction data + "0x" // post-interaction data + ); + + orderSellAmount = 11000000; + orderFeeAmount = (orderSellAmount * fee) / max_bps; + + order2 = OrderEngine.Order( + 125, // nonce value + block.timestamp + 3600, // valid till + orderSellAmount, // 11 USDC - sell token amount + 4800000000000000, // 0.0048 weth - buy token amount + orderFeeAmount, // fee + maker2, // Maker's address + operator, // Taker's Ethereum address (or null for public order) + maker2, // Recipient's Ethereum address + address(usdc), // USDC token address - sell token + address(weth), // MATIC token address - buy token + false, // is partially fillable + "0x", // facilitator calldata + "", // predicate calldata + "0x", // pre-interaction data + "0x" // post-interaction data + ); + + orderSellAmount = 0.0096 ether; + orderFeeAmount = (orderSellAmount * fee) / max_bps; + + order3 = OrderEngine.Order( + 126, // nonce value + block.timestamp + 3600, // valid till + orderSellAmount, // 0.0048 weth - sell token amount + 20000000, // 20 USDC - buy token amount + orderFeeAmount, // fee + maker3, // Maker's address + operator, // Taker's Ethereum address (or null for public order) + maker3, // Recipient's Ethereum address + address(weth), // MATIC token address - sell token + address(usdc), // USDC token address - buy token + false, // is partially fillable + "0x", // facilitator calldata + "", // predicate calldata + "0x", // pre-interaction data + "0x" // post-interaction data + ); + + orders = new OrderEngine.Order[](3); + + orders[0] = order3; + orders[1] = order2; + orders[2] = order1; + + sell = new uint256[](3); + + sell[0] = order3.sellTokenAmount * 1e18; + sell[1] = order2.sellTokenAmount * 1e18; + sell[2] = order1.sellTokenAmount * 1e18; + + buy = new uint256[](3); + + buy[0] = order3.buyTokenAmount * 1e18; + buy[1] = order2.buyTokenAmount * 1e18; + buy[2] = order1.buyTokenAmount * 1e18; + + signatures = new bytes[](3); + + (uint8 v, bytes32 r, bytes32 s) = vm.sign(maker1PrivateKey, _hashTypedDataV4(OrderEngine.hash(order1))); + bytes memory order1Signature = abi.encodePacked(r, s, v); + + (v, r, s) = vm.sign(maker2PrivateKey, _hashTypedDataV4(OrderEngine.hash(order2))); + bytes memory order2Signature = abi.encodePacked(r, s, v); + + (v, r, s) = vm.sign(maker3PrivateKey, _hashTypedDataV4(OrderEngine.hash(order3))); + bytes memory order3Signature = abi.encodePacked(r, s, v); + + signatures[0] = order3Signature; + signatures[1] = order2Signature; + signatures[2] = order1Signature; + + facilitatorInteraction = "0x"; + borrowedAmounts = new uint256[](0); + borrowedTokens = new IERC20[](0); + } + + function getStandardInput8() private view returns( + OrderEngine.Order[] memory orders, + uint256[] memory sell, + uint256[] memory buy, + bytes[] memory signatures, + bytes memory facilitatorInteraction, + IERC20[] memory borrowedTokens, + uint256[] memory borrowedAmounts, + OrderEngine.Order memory order1, + OrderEngine.Order memory order2 + ) { + + uint fee = advancedOrderEngine.minimumFee(); + uint max_bps = advancedOrderEngine.MAX_BPS(); + + order1 = getOrder1(); + order2 = getOrder2(); + + order1.feeAmounts = (order1.sellTokenAmount * fee) / max_bps; + order2.feeAmounts = (order2.sellTokenAmount * fee) / max_bps; + + orders = new OrderEngine.Order[](2); + + orders[0] = order2; + orders[1] = order1; + + sell = new uint256[](2); + + sell[0] = order2.sellTokenAmount * 1e18 / 2; + sell[1] = order1.sellTokenAmount * 1e18 / 2; + + buy = new uint256[](2); + + buy[0] = order2.buyTokenAmount * 1e18 / 2; + buy[1] = order1.buyTokenAmount * 1e18 / 2; + + signatures = new bytes[](2); + + (uint8 v, bytes32 r, bytes32 s) = vm.sign(maker2PrivateKey, _hashTypedDataV4(OrderEngine.hash(order2))); + bytes memory sellOrderSignature = abi.encodePacked(r, s, v); + + (v, r, s) = vm.sign(maker1PrivateKey, _hashTypedDataV4(OrderEngine.hash(order1))); + bytes memory buyOrderSignature = abi.encodePacked(r, s, v); + + signatures[0] = sellOrderSignature; + signatures[1] = buyOrderSignature; + + facilitatorInteraction = "0x"; + borrowedAmounts = new uint256[](0); + borrowedTokens = new IERC20[](0); + } + + function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) { + return ECDSA.toTypedDataHash(advancedOrderEngine.DOMAIN_SEPARATOR(), structHash); + } + + function _oraclePrice() internal view virtual returns (uint256) { + return 99999 ether; + } +} \ No newline at end of file diff --git a/test/Invariants.md b/test/Invariants.md new file mode 100644 index 0000000..1966998 --- /dev/null +++ b/test/Invariants.md @@ -0,0 +1,25 @@ +| **Property** | **Type** | **Risk**| **Tested (✔/✘)**| +| ------------------------------------------------------------------------------------------------------------ | ----------------- | ---- | ------ | +| All orders must be fulfilled/executed. / revert condition. | High-Level | | | +| Fill order must be only called by Operator. | High-Level | | | +| All orders must be fulfilled at a specified price. | High-Level | | | +| Facilitator interactions must not result in loss of funds. | | | | +| An order from a Contract must be fulfilled. | Unit-test | | | +| An order from an EOA must be fulfilled. | Unit-test | | | +| Maker should be able to cancel an order. | Unit-test | | | +| After the matching of the orders, the balance must be updated rightly. / transfer of funds must be done. | | | | +| The vault must not keep funds after the fullfilment of orders. I.e balance[before] == balance[after] | | | | +| The assets from maker to taker must be transferred without any cutting of fees (right Now). | | | | +| If applied , The private orders must only be fulfilled by the specified entity | | | | +| The Order Engine must operate on erc20 assets | | | | +| If falsh-loan facility is leveraged by facilitator , funds should be returned within the tx | | | | +| Upon filling orders funds from Seller & Maker are moved to vault | State Transitions | | | +| Upon Finalizing the order funds are moved from vault to seller and maker | State Transitions | | | +| Only Whitelisted tokens to be accepted | | | | +| Funds should not be lost in case the receiver is zero address | | | | +| After the expiry time the order should not be fullfilled | | | | +| 1 Large order should fullfil multiple small orders | High-Level | | | +| Orders with higher priority ( higher fees) should always be processed before lower priority orders | High-Level | | | +| Facilitator interactions must be in scope of order fulfillment within a transaction | | | | +| once an order is cancelted it cant be executed , even partially | | | | +| the contract should handle unexpected input like large arrays without failing or causing excessive gas costs | | | | diff --git a/test/README.md b/test/README.md new file mode 100644 index 0000000..8fe4f64 --- /dev/null +++ b/test/README.md @@ -0,0 +1,39 @@ +# Test Summary + +| Test Name | Description | Tested (✔/✘) | +|--------------------------- |----------------------------------------------------------------------------------|------------------| +| `setUp` | Initializes the smart contract with predefined conditions for subsequent tests. | ✔ | +| `testWithdraw` | Validates the withdrawal functionality of the smart contract, including invalid attempts, ownership checks, and successful withdrawal. | ✔ | +| `testOperatorPrivilege` | Tests the management of operator privileges in the smart contract, covering operator addition, removal, ownership checks, and invalid attempts. | ✔ | +| `testUpdateTokenWhitelist` | Checks the token whitelist updating functionality of the smart contract, including token whitelisting, invalid attempts, and ownership checks. | ✔ | +| `testChangePredicateAddress` | Validates the functionality of changing the predicate address, covering successful address change, invalid attempts, and ownership checks. | ✔ | +| `testChangeFeeCollectorAddress` | Checks the functionality of changing the fee collector address, covering successful address change, invalid attempts, and ownership checks. | ✔ | +| `testFillOrders` | Tests the order filling functionality of the smart contract, including successful order filling with updated token balances. | ✔ | +| `testRingOrders` | Validates the order ring functionality of the smart contract, ensuring correct token balances after ring execution. | ✔ | +| `testFillOrderInChunks` | Tests the order filling functionality in chunks, covering multiple order fillings with updated token balances. | ✔ | +| `testNoOrderInputFillOrders` | Ensures the smart contract reverts when attempting to fill orders with no input orders provided. | ✔ | +| `testInvalidInputFillOrders` | Validates the handling of invalid inputs during the order filling process, including expired orders, zero amounts, non-whitelisted tokens, zero address tokens/operators, and invalid signatures. | ✔ | +| `testOrderReplay` | Checks that the smart contract reverts when attempting to replay an already filled order. | ✔ | +| `testInputLengthMismatchFillOrders` | Validates that the smart contract reverts when encountering input length mismatches during the order filling process. | ✔ | +| `testPartiallyFillableOrder` | Tests the partially fillable order functionality, ensuring correct token balances after partially filling orders. | ✔ | +| `testExceedsOrderSellAmount` | Ensures the smart contract reverts when attempting to fill orders with amounts exceeding the order's sell amount. | ✔ | +| `testPartiallyFillableOrderFail` | Tests the failure scenario when attempting to fill partially fillable orders with incorrect sell and buy amounts. | ✔ | +| `testInvalidSignature` | Tests the failure scenario when attempting to fill orders with an invalid signature. | ✔ | +| `testFillOrKillFail` | Tests the failure scenario when attempting to fill orders with the "FillOrKill" condition not met. | ✔ | +| `testPredicateFail` | Tests the failure scenario when executing orders with a predicate that evaluates to false. | ✔ | +| `testMultiplePredicateOR` | Tests the successful execution of orders with a logical OR combination of multiple predicates, involving 'lt' and 'gt' conditions. | ✔ | +| `testMultiplePredicateOR1` | Tests the successful execution of orders with another combination of logical OR of multiple predicates, involving 'lt' conditions. | ✔ | +| `testMultiplePredicateORFail` | Tests the failure scenario when executing orders with a logical OR combination of multiple predicates, where the arbitrary call in the second predicate fails. | ✔ | +| `testMultiplePredicateANDFail` | Tests the failure scenario when executing orders with a logical AND combination of multiple predicates, where the arbitrary call in the second predicate fails. | ✔ | +| `testMultiplePredicateANDFail1` | Tests another failure scenario when executing orders with a logical AND combination of multiple predicates, where the arbitrary call in the first predicate fails. | ✔ | +| `testMultiplePredicateAND` | Tests the successful execution of orders with a logical AND combination of multiple predicates, involving 'lt' conditions. | ✔ | +| `testPredicate` | Tests the successful execution of orders with a single predicate involving 'lt' conditions. | ✔ | +| `testDrain` | Execute drain functionality with various orders. | ✔ | +| `testDrainERC20` | Test ERC20 drain functionality, checking for same buy and sell tokens. | ✔ | +| `testAsymetricFillOrKillOrders` | Test asymmetrical fill or kill orders. | ✔ | +| `testAsymetricPartiallyFillOrders` | Test asymmetrical partially filled orders. | ✔ | +| `testFacilitatorBorrowedAmounts` | Test facilitator borrowed amounts functionality. | ✔ | +| `testCancelOrders` | Tests order cancellation with successful fill | ✔ | +| `testCancelOrdersFail` | Tests order cancellation with failed fill when order already filled, invalid access. | ✔ | +| `testSingleOrder` | Tests onchain dex swap through pre-interaction | ✔ | +| `testFacilitatorSwap` | Tests onchain dex swap through facilitator interaction | ✔ | \ No newline at end of file diff --git a/test/interfaces/pricefeed.sol b/test/interfaces/pricefeed.sol new file mode 100644 index 0000000..e874164 --- /dev/null +++ b/test/interfaces/pricefeed.sol @@ -0,0 +1,7 @@ +// SPDX-License-Identifier: MIT + +pragma solidity 0.8.21; + +interface IPriceFeed { + function latestAnswer() external payable returns(uint256); +} \ No newline at end of file diff --git a/test/interfaces/quoter.sol b/test/interfaces/quoter.sol new file mode 100644 index 0000000..468786d --- /dev/null +++ b/test/interfaces/quoter.sol @@ -0,0 +1,50 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.21; + +/// @title Quoter Interface +/// @notice Supports quoting the calculated amounts from exact input or exact output swaps +/// @dev These functions are not marked view because they rely on calling non-view functions and reverting +/// to compute the result. They are also not gas efficient and should not be called on-chain. +interface IQuoter { + /// @notice Returns the amount out received for a given exact input swap without executing the swap + /// @param path The path of the swap, i.e. each token pair and the pool fee + /// @param amountIn The amount of the first token to swap + /// @return amountOut The amount of the last token that would be received + function quoteExactInput(bytes memory path, uint256 amountIn) external returns (uint256 amountOut); + + /// @notice Returns the amount out received for a given exact input but for a swap of a single pool + /// @param tokenIn The token being swapped in + /// @param tokenOut The token being swapped out + /// @param fee The fee of the token pool to consider for the pair + /// @param amountIn The desired input amount + /// @param sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap + /// @return amountOut The amount of `tokenOut` that would be received + function quoteExactInputSingle( + address tokenIn, + address tokenOut, + uint24 fee, + uint256 amountIn, + uint160 sqrtPriceLimitX96 + ) external returns (uint256 amountOut); + + /// @notice Returns the amount in required for a given exact output swap without executing the swap + /// @param path The path of the swap, i.e. each token pair and the pool fee + /// @param amountOut The amount of the last token to receive + /// @return amountIn The amount of first token required to be paid + function quoteExactOutput(bytes memory path, uint256 amountOut) external returns (uint256 amountIn); + + /// @notice Returns the amount in required to receive the given exact output amount but for a swap of a single pool + /// @param tokenIn The token being swapped in + /// @param tokenOut The token being swapped out + /// @param fee The fee of the token pool to consider for the pair + /// @param amountOut The desired output amount + /// @param sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap + /// @return amountIn The amount required as the input for the swap in order to receive `amountOut` + function quoteExactOutputSingle( + address tokenIn, + address tokenOut, + uint24 fee, + uint256 amountOut, + uint160 sqrtPriceLimitX96 + ) external returns (uint256 amountIn); +} \ No newline at end of file diff --git a/test/interfaces/swaprouter.sol b/test/interfaces/swaprouter.sol new file mode 100644 index 0000000..8c296aa --- /dev/null +++ b/test/interfaces/swaprouter.sol @@ -0,0 +1,65 @@ +// SPDX-License-Identifier: MIT + +pragma solidity 0.8.21; + +interface ISwapRouter02 { + struct ExactInputSingleParams { + address tokenIn; + address tokenOut; + uint24 fee; + address recipient; + uint256 amountIn; + uint256 amountOutMinimum; + uint160 sqrtPriceLimitX96; + } + + /// @notice Swaps `amountIn` of one token for as much as possible of another token + /// @dev Setting `amountIn` to 0 will cause the contract to look up its own balance, + /// and swap the entire amount, enabling contracts to send tokens before calling this function. + /// @param params The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata + /// @return amountOut The amount of the received token + function exactInputSingle(ExactInputSingleParams calldata params) external payable returns (uint256 amountOut); + + struct ExactInputParams { + bytes path; + address recipient; + uint256 amountIn; + uint256 amountOutMinimum; + } + + /// @notice Swaps `amountIn` of one token for as much as possible of another along the specified path + /// @dev Setting `amountIn` to 0 will cause the contract to look up its own balance, + /// and swap the entire amount, enabling contracts to send tokens before calling this function. + /// @param params The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata + /// @return amountOut The amount of the received token + function exactInput(ExactInputParams calldata params) external payable returns (uint256 amountOut); + + struct ExactOutputSingleParams { + address tokenIn; + address tokenOut; + uint24 fee; + address recipient; + uint256 amountOut; + uint256 amountInMaximum; + uint160 sqrtPriceLimitX96; + } + + /// @notice Swaps as little as possible of one token for `amountOut` of another token + /// that may remain in the router after the swap. + /// @param params The parameters necessary for the swap, encoded as `ExactOutputSingleParams` in calldata + /// @return amountIn The amount of the input token + function exactOutputSingle(ExactOutputSingleParams calldata params) external payable returns (uint256 amountIn); + + struct ExactOutputParams { + bytes path; + address recipient; + uint256 amountOut; + uint256 amountInMaximum; + } + + /// @notice Swaps as little as possible of one token for `amountOut` of another along the specified path (reversed) + /// that may remain in the router after the swap. + /// @param params The parameters necessary for the multi-hop swap, encoded as `ExactOutputParams` in calldata + /// @return amountIn The amount of the input token + function exactOutput(ExactOutputParams calldata params) external payable returns (uint256 amountIn); +} \ No newline at end of file diff --git a/test/interfaces/weth9.sol b/test/interfaces/weth9.sol new file mode 100644 index 0000000..80f39b9 --- /dev/null +++ b/test/interfaces/weth9.sol @@ -0,0 +1,10 @@ +// SPDX-License-Identifier: MIT + +pragma solidity 0.8.21; + +import "openzeppelin-contracts/contracts/interfaces/IERC20.sol"; + +interface IWETH9 is IERC20 { + function deposit() external payable; + function withdraw(uint wad) external; +} \ No newline at end of file diff --git a/test/test.t.sol b/test/test.t.sol new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/test/test.t.sol @@ -0,0 +1 @@ + diff --git a/test/unit/.DS_Store b/test/unit/.DS_Store new file mode 100644 index 0000000..c4e723d Binary files /dev/null and b/test/unit/.DS_Store differ diff --git a/test/unit/fuzz/PredicatesLogic.t.sol b/test/unit/fuzz/PredicatesLogic.t.sol new file mode 100644 index 0000000..02640f6 --- /dev/null +++ b/test/unit/fuzz/PredicatesLogic.t.sol @@ -0,0 +1,127 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.21; + +import "forge-std/Test.sol"; +import "forge-std/console.sol"; +import "../../../src/Helper/VerifyPredicatesLogic.sol"; +import "../../../src/Predicates.sol"; +import "../../../src/Helper/GenerateCalldata.sol"; +import "../../../src/Helper/TargetContract.sol"; + +contract VerifyPredicatesLogicTest is Test { + VerifyPredicatesLogic public verifyPredicate; + TargetContract public targetContract; + GenerateCalldata public generateCalldata; + Predicates public predicateContract; + + function setUp() public { + predicateContract = new Predicates(); + verifyPredicate = new VerifyPredicatesLogic(address(predicateContract)); + targetContract = new TargetContract(); + generateCalldata = new GenerateCalldata(address(targetContract)); + } + /* + To test + + 1. Lt [x] + 2. Gt [x] + 3. and [x] + 4. or [x] + 5. not [x] + 6. eq [x] + + */ + + function test_lt(uint256 value,uint256 target_value) public { + + vm.assume(value > 0 && target_value > 0); + // bound() + bytes memory predicate = generateCalldata.generateCalldatadynamic("lt",value,target_value); + + // target_value < value + if (value > target_value) { + // Expect verify to return true if "value" is greater than "target_value" + verifyPredicate.verify(predicate); + } else { + // Expect verify to return false if "value" is not less than "target_value" + vm.expectRevert(); + verifyPredicate.verify(predicate); + } + } + + function test_gt(uint256 value,uint256 target_value) public { + + vm.assume(value > 0 && target_value > 0); + + bytes memory predicate = generateCalldata.generateCalldatadynamic("gt",value,target_value); + + if (value < target_value) { + // Expect verify to return true if target_value is greater than value + verifyPredicate.verify(predicate); + + } else { + // Expect verify to return false if value is not greater than target_value + vm.expectRevert(); + verifyPredicate.verify(predicate); + + } + } + + function test_eq(uint256 value,uint256 target_value) public { + + vm.assume(value > 0 && target_value > 0); + + bytes memory predicate = generateCalldata.generateCalldatadynamic("eq",value,target_value); + + if (value == target_value) { + // Expect verify to return true if target_value is greater than value + verifyPredicate.verify(predicate); + + } else { + // Expect verify to return false if value is not greater than target_value + vm.expectRevert(); + verifyPredicate.verify(predicate); + + } + } + + function test_and_lt_gt(uint256 value_1,uint256 target_value_1,uint256 value_2,uint256 target_value_2) public{ + + bytes memory predicate = generateCalldata.generateCalldataAnd_lt_gt(value_1, target_value_1, value_2, target_value_2); + + if ((target_value_1 < value_1) && (target_value_2 > value_2)){ + verifyPredicate.verify(predicate); + } + + else{ + vm.expectRevert(); + verifyPredicate.verify(predicate); + } + } + + function test_or_lt_gt(uint256 value_1,uint256 target_value_1,uint256 value_2,uint256 target_value_2) public{ + + bytes memory predicate = generateCalldata.generateCalldataOr_lt_gt(value_1, target_value_1, value_2, target_value_2); + + if ((target_value_1 < value_1) || (target_value_2 > value_2)){ + verifyPredicate.verify(predicate); + } + + else{ + vm.expectRevert(); + verifyPredicate.verify(predicate); + } + } + + function test_not() view public { + + bytes memory predicate = generateCalldata.generateCalldataNot(); + + verifyPredicate.verify(predicate); + + } + + + } + +