dydxprotocol / perpetual

Ethereum Smart Contracts and TypeScript library used for the dYdX Perpetual Contracts
Apache License 2.0
170 stars 66 forks source link

Add function-signature collision test #221

Closed BrendanChou closed 4 years ago

BrendanChou commented 4 years ago

printed-out and traced execution locally to double-check that the hashing is being done properly and the signatures object is populated correctly

 Function Signatures
{ '0xf851a440': 'admin()',
  '0x8f283970': 'changeAdmin(address)',
  '0x5c60da1b': 'implementation()',
  '0x3659cfe6': 'upgradeTo(address)',
  '0x4f1ef286': 'upgradeToAndCall(address,bytes)',
  '0x47e7ef24': 'deposit(address,uint256)',
  '0xf40c3699': 'enableFinalSettlement(uint256,uint256)',
  '0x93423e9c': 'getAccountBalance(address)',
  '0x9ba63e9e': 'getAccountIndex(address)',
  '0x6e9960c3': 'getAdmin()',
  '0x7099366b': 'getFinalSettlementEnabled()',
  '0xdc4f3a0e': 'getFunderContract()',
  '0x80d63681': 'getGlobalIndex()',
  '0x052f72d7': 'getIsGlobalOperator(address)',
  '0x3a031bf0': 'getIsLocalOperator(address,address)',
  '0xe830b690': 'getMinCollateral()',
  '0xe3bbb565': 'getOracleContract()',
  '0x796da7af': 'getOraclePrice()',
  '0x28b7bede': 'getTokenContract()',
  '0x84ea2862': 'hasAccountPermissions(address,address)',
  '0x0acc8cd1': 'setFunder(address)',
  '0x46d256c5': 'setGlobalOperator(address,bool)',
  '0xb4959e72': 'setLocalOperator(address,bool)',
  '0x846321a4': 'setMinCollateral(uint256)',
  '0x7adbf973': 'setOracle(address)',
  '0x68eec3f6': 'trade(address[],(uint256,uint256,address,bytes)[])',
  '0xd9caed12': 'withdraw(address,address,uint256)',
  '0x142c69b3': 'withdrawFinalSettlement()',
  '0xa895155b': 'initializeV1(address,address,address,uint256)',
  '0x56a281ea': 'MAX_ABS_DIFF_PER_SECOND()',
  '0x499c9c6d': 'MAX_ABS_VALUE()',
  '0x0b8781ee': '_FUNDING_RATE_PROVIDER_()',
  '0x8f32d59b': 'isOwner()',
  '0x8da5cb5b': 'owner()',
  '0x715018a6': 'renounceOwnership()',
  '0xf2fde38b': 'transferOwnership(address)',
  '0xebed4bd4': 'getFunding(uint256)',
  '0xef460e36': 'setFundingRate((uint256,bool))',
  '0x109f60e3': 'setFundingRateProvider(address)',
  '0x46fb89ce': '_ADJUSTMENTS_(address)',
  '0xca670a7a': '_ROUTER_(address)',
  '0x98d5fdca': 'getPrice()',
  '0x0505e94d': 'setRoute(address,address)',
  '0xf77b3a17': 'setAdjustment(address,uint256)',
  '0xc7dc03f9': '_EIP712_DOMAIN_HASH_()',
  '0x5c457f29': '_FILLED_AMOUNT_(bytes32)',
  '0xd4bec8eb': '_PERPETUAL_V1_()',
  '0x9ea07071': '_STATUS_(bytes32)',
  '0x970c2ba1': 'trade(address,address,address,uint256,bytes,bytes32)',
  '0x867f1690':
   'approveOrder((bytes32,uint256,uint256,uint256,uint256,address,address,uint256))',
  '0x7946c890':
   'cancelOrder((bytes32,uint256,uint256,uint256,uint256,address,address,uint256))',
  '0xaacc263e': 'getOrdersStatus(bytes32[])',
  '0x741c1195': 'DELEVERAGING_TIMELOCK_S()',
  '0x8e085c98': '_DELEVERAGING_OPERATOR_()',
  '0x5ce999b6': '_MARKED_TIMESTAMP_(address)',
  '0x7ceeb880': 'mark(address)',
  '0xa5db6198': 'unmark(address)',
  '0x4ca5dcb2': 'setDeleveragingOperator(address)',
  '0xfe0f8858': 'approveMaximumOnPerpetual(address)',
  '0xb13b8d0a': 'deposit(address,address,address,address,uint256,bytes)',
  '0x5b3901f6':
   'withdraw(address,address,address,address,address,uint256,bytes)',
  '0x4ce7c2ca': '_INSURANCE_FEE_()',
  '0x3fa8c92a': '_INSURANCE_FUND_()',
  '0x786ed92e': '_LIQUIDATION_()',
  '0x8ffac733': 'approveMaximumOnPerpetual()',
  '0xa5d9c62a': 'liquidate(address,address,bool,(uint256,bool))',
  '0xc3c05293': 'setInsuranceFund(address)',
  '0xba32681e': 'setInsuranceFee(uint256)',
  '0x60aec0f0': 'EXCHANGE_ADDRESS()',
  '0x13dfc516': '_MAKER_AMOUNT_()',
  '0x8c4d443f': '_TAKER_AMOUNT_()',
  '0x3ebddc21': 'setMakerAmount(uint256)',
  '0xcc246d8b': 'setTakerAmount(uint256)',
  '0x3a8fdd7d': 'getExchangeCost(address,address,uint256,bytes)',
  '0x7d98ebac': 'exchange(address,address,address,address,uint256,bytes)',
  '0x5001f3b5': 'base()',
  '0xce18b190': 'baseMul(uint256,uint256)',
  '0x6394400f': 'baseMulRoundUp(uint256,uint256)',
  '0x5b827a5d': 'getFraction(uint256,uint256,uint256)',
  '0x97259d26': 'getFractionRoundUp(uint256,uint256,uint256)',
  '0x7ae2b5c7': 'min(uint256,uint256)',
  '0x6d5433e6': 'max(uint256,uint256)',
  '0x4c93be61': 'that(bool,string,address)',
  '0x809fdd33': 'toUint128(uint256)',
  '0x1e4e4bad': 'toUint120(uint256)',
  '0xc8193255': 'toUint32(uint256)',
  '0x2953a626': 'add((uint256,bool),uint256)',
  '0xd165c800': 'sub((uint256,bool),uint256)',
  '0xb63f6580': 'signedAdd((uint256,bool),(uint256,bool))',
  '0x51894bf6': 'signedSub((uint256,bool),(uint256,bool))',
  '0xf0350799': 'load(bytes32)',
  '0x4000e4f6': 'store(bytes32,bytes32)',
  '0x19045a25': 'recover(bytes32,bytes)',
  '0xd46b4aff': 'copy((bool,bool,uint120,uint120))',
  '0xe78af4ec': 'addToMargin((bool,bool,uint120,uint120),uint256)',
  '0x7dd1c962': 'subFromMargin((bool,bool,uint120,uint120),uint256)',
  '0xcf178408': 'addToPosition((bool,bool,uint120,uint120),uint256)',
  '0x437348e7': 'subFromPosition((bool,bool,uint120,uint120),uint256)',
  '0xd5ae406c':
   'getPositiveAndNegativeValue((bool,bool,uint120,uint120),uint256)',
  '0xc1f7ea1e': 'getMargin((bool,bool,uint120,uint120))',
  '0x1491ac01': 'getPosition((bool,bool,uint120,uint120))',
  '0x80778a4f': 'setMargin((bool,bool,uint120,uint120),(uint256,bool))',
  '0x0d261665': 'setPosition((bool,bool,uint120,uint120),(uint256,bool))',
  '0x4437e178': 'nonReentrant1()',
  '0x7bdfba4b': 'nonReentrant2()',
  '0x4993cc3b': '_FUNDING_()',
  '0x910fb073': '_FUNDING_IS_POSITIVE_()',
  '0xe41a054f': 'setFunding(bool,uint256)',
  '0x6d2c6021': 'TRADER_FLAG_RESULT_2()',
  '0x9f5cf46a': '_PRICE_()',
  '0x495f9bff': '_TRADE_RESULT_()',
  '0x75092a30': '_TRADE_RESULT_2_()',
  '0x91b7f5ed': 'setPrice(uint256)',
  '0x63a3d85f': 'setSecondTradeResult(uint256,uint256,bool,bytes32)',
  '0xe53adbb2': 'setTradeResult(uint256,uint256,bool,bytes32)',
  '0xdd62ed3e': 'allowance(address,address)',
  '0x095ea7b3': 'approve(address,uint256)',
  '0x70a08231': 'balanceOf(address)',
  '0x313ce567': 'decimals()',
  '0xa457c2d7': 'decreaseAllowance(address,uint256)',
  '0x39509351': 'increaseAllowance(address,uint256)',
  '0x06fdde03': 'name()',
  '0x95d89b41': 'symbol()',
  '0x18160ddd': 'totalSupply()',
  '0xa9059cbb': 'transfer(address,uint256)',
  '0x23b872dd': 'transferFrom(address,address,uint256)',
  '0x40c10f19': 'mint(address,uint256)',
  '0x6f0fb301': '_VALID_()',
  '0x262a9dff': 'age()',
  '0xfebb0f7e': 'bar()',
  '0xb8a35a01': 'setValidity(bool)',
  '0x57de26a4': 'read()',
  '0x59e02dd7': 'peek()',
  '0x89bbb8b2': 'poke(uint256[],uint256[],uint8[],bytes32[],bytes32[])' }