errors reported as strings not bytes
This commit is contained in:
@@ -7,7 +7,7 @@ pragma abicoder v2;
|
|||||||
contract Dexorder {
|
contract Dexorder {
|
||||||
// represents the Dexorder organization
|
// represents the Dexorder organization
|
||||||
|
|
||||||
event DexorderExecutions(uint128 indexed id, bytes[] errors);
|
event DexorderExecutions(bytes16 indexed id, string[] errors);
|
||||||
|
|
||||||
struct ExecutionRequest {
|
struct ExecutionRequest {
|
||||||
address payable vault;
|
address payable vault;
|
||||||
@@ -17,29 +17,29 @@ contract Dexorder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function execute( uint128 id, ExecutionRequest memory req ) public returns (bytes memory error) {
|
function execute( bytes16 id, ExecutionRequest memory req ) public returns (string memory error) {
|
||||||
error = _execute(req);
|
error = _execute(req);
|
||||||
bytes[] memory errors = new bytes[](1);
|
string[] memory errors = new string[](1);
|
||||||
errors[0] = error;
|
errors[0] = error;
|
||||||
emit DexorderExecutions(id, errors);
|
emit DexorderExecutions(id, errors);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function execute( uint128 id, ExecutionRequest[] memory reqs ) public returns (bytes[] memory errors) {
|
function execute( bytes16 id, ExecutionRequest[] memory reqs ) public returns (string[] memory errors) {
|
||||||
errors = new bytes[](reqs.length);
|
errors = new string[](reqs.length);
|
||||||
for( uint8 i=0; i<reqs.length; i++ )
|
for( uint8 i=0; i<reqs.length; i++ )
|
||||||
errors[i] = _execute(reqs[i]);
|
errors[i] = _execute(reqs[i]);
|
||||||
emit DexorderExecutions(id, errors);
|
emit DexorderExecutions(id, errors);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function _execute( ExecutionRequest memory req ) private returns (bytes memory error) {
|
function _execute( ExecutionRequest memory req ) private returns (string memory error) {
|
||||||
// single tranche execution
|
// single tranche execution
|
||||||
try Vault(req.vault).execute(req.orderIndex, req.trancheIndex, req.proof) {
|
try Vault(req.vault).execute(req.orderIndex, req.trancheIndex, req.proof) {
|
||||||
return '';
|
error = '';
|
||||||
}
|
}
|
||||||
catch (bytes memory reason) {
|
catch Error(string memory reason) {
|
||||||
return reason;
|
error = reason;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ library VaultAddress {
|
|||||||
// keccak-256 hash of the Vault's bytecode (not the deployed bytecode but the initialization bytecode)
|
// keccak-256 hash of the Vault's bytecode (not the deployed bytecode but the initialization bytecode)
|
||||||
// can paste into:
|
// can paste into:
|
||||||
// https://emn178.github.io/online-tools/keccak_256.html
|
// https://emn178.github.io/online-tools/keccak_256.html
|
||||||
bytes32 internal constant VAULT_INIT_CODE_HASH = 0x94dd1e2fe4a67770f9295aff1b352fb0792647d2377cd96aa72e4c3a3222aad1;
|
bytes32 internal constant VAULT_INIT_CODE_HASH = 0xbf7fa358e7e01c60966db5f8298feffb8b7e2aa494a6ba4a0f94a17a817f93ff;
|
||||||
|
|
||||||
// the contract being constructed must not have any constructor arguments or the determinism will be broken. instead, use a callback to
|
// the contract being constructed must not have any constructor arguments or the determinism will be broken. instead, use a callback to
|
||||||
// get construction arguments
|
// get construction arguments
|
||||||
|
|||||||
Reference in New Issue
Block a user