Address Contract Partially Verified
Address
0x448a5065aeBB8E423F0896E6c5D525C040f59af3
Balance
0 ETH
Nonce
1
Code Size
10370 bytes
Creator
0xEC4D29fD...8356 at tx 0xa066bef4...064fbf
Indexed Transactions
0
Contract Bytecode
10370 bytes
0x6060604052600436106102b05763ffffffff60e060020a600035041663049878f381146102b5578063071bafb5146102cd5780630f8a771e146102fc57806312d43a511461030f57806313af403514610322578063143e55e0146103415780631f3634ed1461036657806320aba08b1461037c57806327e7e21e1461038f578063338a0261146103a2578063343aad82146103b5578063355274ea146103c857806340cc8854146103db578063440f19ba146103f1578063454a2ab31461040a5780634995543114610420578063509bf2bf1461043357806351f91066146104465780636626b26d1461045957806367550a35146104805780636c32c0a6146104935780636f78ee0d146104a657806373b38101146104bc5780637a9e5e4b146104d55780637bd2bea7146104f45780637e74325f146105075780637ec9c3b8146105265780637f8661a11461053957806382bf9a751461054f5780638a95a7461461056e5780638ceedb47146105815780638cf0c1911461059a5780638da5cb5b146105ad5780639166cba4146105c057806392b0d721146105d357806399c8d556146105ec5780639f678cca146105ff578063a5cd184e14610612578063ab0783da1461062b578063ace237f51461063e578063b2a1449b14610651578063b3b77a5114610664578063b84d21061461067d578063baa8529c14610693578063bf7e214f146106b5578063c8e13bb4146106c8578063c92aecc4146106db578063cf48d1a6146106ee578063d741e2f91461070d578063d9c27cc614610720578063ddca3f431461073f578063de5f551714610752578063e0ae96e914610768578063e47e7e661461077b578063e95823ad14610791578063f03c7c6e146107a7578063f7c8d634146107ba578063fcfff16f146107d0578063fd221031146107e3578063fdac0025146107f6575b600080fd5b34156102c057600080fd5b6102cb600435610849565b005b34156102d857600080fd5b6102e06109cd565b604051600160a060020a03909116815260200160405180910390f35b341561030757600080fd5b6102e06109dc565b341561031a57600080fd5b6102e06109eb565b341561032d57600080fd5b6102cb600160a060020a03600435166109fa565b341561034c57600080fd5b610354610a6c565b60405190815260200160405180910390f35b341561037157600080fd5b610354600435610a70565b341561038757600080fd5b610354610a85565b341561039a57600080fd5b610354610a8b565b34156103ad57600080fd5b610354610b05565b34156103c057600080fd5b6102cb610b16565b34156103d357600080fd5b610354610bb1565b34156103e657600080fd5b6102cb600435610bb7565b34156103fc57600080fd5b6102cb600435602435610e4b565b341561041557600080fd5b610354600435611077565b341561042b57600080fd5b6103546110af565b341561043e57600080fd5b6103546110b5565b341561045157600080fd5b6103546110bb565b341561046457600080fd5b61046c611149565b604051901515815260200160405180910390f35b341561048b57600080fd5b6102e0611152565b341561049e57600080fd5b610354611161565b34156104b157600080fd5b610354600435611167565b34156104c757600080fd5b6102cb600435602435611197565b34156104e057600080fd5b6102cb600160a060020a0360043516611422565b34156104ff57600080fd5b6102e0611494565b341561051257600080fd5b6102cb600160a060020a03600435166114a3565b341561053157600080fd5b610354611548565b341561054457600080fd5b6102cb600435611636565b341561055a57600080fd5b6102cb600160a060020a0360043516611793565b341561057957600080fd5b61035461182e565b341561058c57600080fd5b6102cb600435602435611889565b34156105a557600080fd5b6103546119d7565b34156105b857600080fd5b6102e06119dd565b34156105cb57600080fd5b6102e06119ec565b34156105de57600080fd5b6102cb6004356024356119fb565b34156105f757600080fd5b610354611c2c565b341561060a57600080fd5b6102cb611c32565b341561061d57600080fd5b6102cb600435602435611dd6565b341561063657600080fd5b610354611f47565b341561064957600080fd5b6102e0611f4d565b341561065c57600080fd5b61046c611f5c565b341561066f57600080fd5b6102cb600435602435611f6a565b341561068857600080fd5b6102cb6004356120ad565b341561069e57600080fd5b6102cb600435600160a060020a03602435166121ac565b34156106c057600080fd5b6102e061226e565b34156106d357600080fd5b61035461227d565b34156106e657600080fd5b610354612283565b34156106f957600080fd5b6102cb600160a060020a0360043516612294565b341561071857600080fd5b6102e061232f565b341561072b57600080fd5b6102cb600160a060020a036004351661233e565b341561074a57600080fd5b6103546123d9565b341561075d57600080fd5b6102e06004356123df565b341561077357600080fd5b6103546123fa565b341561078657600080fd5b61035460043561240a565b341561079c57600080fd5b61046c600435612423565b34156107b257600080fd5b6102e06124ca565b34156107c557600080fd5b6103546004356124d9565b34156107db57600080fd5b6103546124f7565b34156107ee57600080fd5b6102e06125d5565b341561080157600080fd5b61080c6004356125e4565b6040518085600160a060020a0316600160a060020a0316815260200184815260200183815260200182815260200194505050505060405180910390f35b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a460125460ff16156108af57600080fd5b60006108ba8461240a565b116108c457600080fd5b600554600160a060020a03166323b872dd33306108e08761240a565b60006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561093857600080fd5b6102c65a03f1151561094957600080fd5b50505060405180519050151561095e57600080fd5b600454600160a060020a03166340c10f19338560405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156109b457600080fd5b6102c65a03f115156109c557600080fd5b505050505050565b600354600160a060020a031681565b600454600160a060020a031681565b600654600160a060020a031681565b610a1033600035600160e060020a031916612615565b1515610a1b57600080fd5b60018054600160a060020a031916600160a060020a038381169190911791829055167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b4290565b60009081526019602052604090206001015490565b60145481565b600454600090600160a060020a03166370a0823130836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610ae657600080fd5b6102c65a03f11515610af757600080fd5b505050604051805191505090565b6000610b0f611c32565b5060165490565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a4610b8233600035600160e060020a031916612615565b1515610b8d57600080fd5b60125460ff161515610b9e57600080fd5b50506012805461ff001916610100179055565b600d5481565b6000806004356024358082600160a060020a033316600160e060020a031986351634873660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a4610c1685612423565b1580610c24575060125460ff165b1515610c2f57600080fd5b610c38856124d9565b600354600a54919550600160a060020a03908116916340c10f1991168660405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515610c9857600080fd5b6102c65a03f11515610ca957600080fd5b5050601754600087815260196020526040902060020154610cca925061270b565b60175560008581526019602052604081206002810182905560030155600c54610d7190610d6490610cfc90879061271b565b600754600160a060020a031663495d32cb6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610d4457600080fd5b6102c65a03f11515610d5557600080fd5b5050506040518051905061271b565b610d6c6110bb565b61275e565b600086815260196020526040902060010154909350831115610da25760008581526019602052604090206001015492505b600454600a54600160a060020a039182169163b753a98c91168560405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515610dff57600080fd5b6102c65a03f11515610e1057600080fd5b505050600085815260196020526040902060010154610e2f908461270b565b6000958652601960205260409095206001019490945550505050565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a460125460ff1615610eb157600080fd5b60008481526019602052604090205433600160a060020a03908116911614610ed857600080fd5b6000610ee684610d6c612283565b11610ef057600080fd5b600084815260196020526040902060020154610f1790610f1285610d6c612283565b612782565b600085815260196020526040902060020155601754610f3c90610f1285610d6c612283565b601755600084815260196020526040902060030154610f6190610f1285610d6c610b05565b6000858152601960205260409081902060038101929092556002549154600160a060020a03928316926340c10f199291169086905160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515610fd657600080fd5b6102c65a03f11515610fe757600080fd5b505050610ff384612423565b1515610ffe57600080fd5b600d54600254600160a060020a03166318160ddd6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561104957600080fd5b6102c65a03f1151561105a57600080fd5b505050604051805190501115151561107157600080fd5b50505050565b60006110a9826110a4611088611548565b61109f670de0b6b3a764000060020260115461270b565b612792565b61271b565b92915050565b60185481565b600c5481565b60125460009060ff166111405761113b6110d3611548565b600854600160a060020a03166357de26a46000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561111b57600080fd5b6102c65a03f1151561112c57600080fd5b50505060405180519050612792565b611144565b6013545b905090565b60125460ff1681565b600754600160a060020a031681565b60115481565b6000818152601960205260408120600301546110a990611189906110a4610b05565b611192846124d9565b61270b565b600080806004356024358082600160a060020a033316600160e060020a031986351634873660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a460125460ff16156111fe57600080fd5b611217866110a461120e8a611167565b610d6c8b6124d9565b60008881526019602052604090206002015490955061123c9061119288610d6c612283565b6000888152601960205260409020600201556017546112619061119288610d6c612283565b60175560008781526019602052604090206003015461128f906111926112878989612782565b610d6c610b05565b6000888152601960205260409081902060030191909155600254600160a060020a031690639dc29fac90339089905160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156112fe57600080fd5b6102c65a03f1151561130f57600080fd5b5050600954600160a060020a031690506359e02dd76000604051604001526040518163ffffffff1660e060020a0281526004016040805180830381600087803b151561135a57600080fd5b6102c65a03f1151561136b57600080fd5b505050604051805190602001805190509350935082801561138b57508315155b1561141957600654600b54600160a060020a039182169163bb35783b913391166113b589896127ba565b60405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401600060405180830381600087803b151561140457600080fd5b6102c65a03f1151561141557600080fd5b5050505b50505050505050565b61143833600035600160e060020a031916612615565b151561144357600080fd5b60008054600160a060020a031916600160a060020a038381169190911791829055167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b600554600160a060020a031681565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a4600a54600160a060020a03161561150f57600080fd5b600160a060020a038316151561152457600080fd5b5050600a8054600160a060020a031916600160a060020a0392909216919091179055565b600454600090600160a060020a03166318160ddd82604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561159257600080fd5b6102c65a03f115156115a357600080fd5b50505060405180511590506116255761113b6115bd61182e565b600454600160a060020a03166318160ddd6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561160557600080fd5b6102c65a03f1151561161657600080fd5b5050506040518051905061275e565b506b033b2e3c9fd0803ce800000090565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a460125460ff1615806116a55750601254610100900460ff165b15156116b057600080fd5b600554600160a060020a031663a9059cbb336116cb86611077565b60006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561171757600080fd5b6102c65a03f1151561172857600080fd5b50505060405180519050151561173d57600080fd5b600454600160a060020a0316639dc29fac338560405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156109b457600080fd5b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a46117ff33600035600160e060020a031916612615565b151561180a57600080fd5b505060088054600160a060020a031916600160a060020a0392909216919091179055565b600554600090600160a060020a03166370a0823130836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610ae657600080fd5b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a46118f533600035600160e060020a031916612615565b151561190057600080fd5b60125460ff1615801561191257508315155b151561191d57600080fd5b6012805460ff191660011790556b033b2e3c9fd0803ce8000000600c55670de0b6b3a76400006011556013849055600554600a54600160a060020a039182169163a9059cbb91168560006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156119b157600080fd5b6102c65a03f115156119c257600080fd5b50505060405180519050151561107157600080fd5b60175481565b600154600160a060020a031681565b600254600160a060020a031681565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a4611a6733600035600160e060020a031916612615565b1515611a7257600080fd5b7f6361700000000000000000000000000000000000000000000000000000000000841415611aa457600d839055611071565b7f6d61740000000000000000000000000000000000000000000000000000000000841415611aef576b033b2e3c9fd0803ce8000000831015611ae557600080fd5b600e839055611071565b7f7461780000000000000000000000000000000000000000000000000000000000841415611b42576b033b2e3c9fd0803ce8000000831015611b3057600080fd5b611b38611c32565b600f839055611071565b7f6665650000000000000000000000000000000000000000000000000000000000841415611b95576b033b2e3c9fd0803ce8000000831015611b8357600080fd5b611b8b611c32565b6010839055611071565b7f6178650000000000000000000000000000000000000000000000000000000000841415611be0576b033b2e3c9fd0803ce8000000831015611bd657600080fd5b600c839055611071565b7f6761700000000000000000000000000000000000000000000000000000000000841415611c2757670de0b6b3a7640000831015611c1d57600080fd5b6011839055611071565b611071565b600f5481565b60008080806004356024358082600160a060020a033316600160e060020a031986351634873660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a460125460ff1615611c9a576109c5565b611ca2610a6c565b9550601454860394508460001415611cb9576109c5565b6014869055600f546b033b2e3c9fd0803ce800000094508414611d84576015549250611ce7600f54866127d2565b9350611cf56015548561271b565b6015819055600254600a54600160a060020a03918216926340c10f199290911690611d2c90611d24908861270b565b60175461271b565b60405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515611d6f57600080fd5b6102c65a03f11515611d8057600080fd5b5050505b6010546b033b2e3c9fd0803ce800000014611dac57611da9846110a4601054886127d2565b93505b6b033b2e3c9fd0803ce800000084146109c557611dcb6016548561271b565b601655505050505050565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a460008481526019602052604090205433600160a060020a03908116911614611e5357600080fd5b600084815260196020526040902060010154611e6f908461270b565b6000858152601960205260409081902060010191909155600454600160a060020a03169063b753a98c90339086905160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b1515611ede57600080fd5b6102c65a03f11515611eef57600080fd5b505050611efb84612423565b1515611f0657600080fd5b6000848152601960205260409020600101541580611f3c57506000848152601960205260409020600101546611c37937e0800090115b151561107157600080fd5b600e5481565b600954600160a060020a031681565b601254610100900460ff1681565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a460125460ff1615611fd057600080fd5b600084815260196020526040902060010154611fec9084612782565b6000858152601960205260409081902060010191909155600454600160a060020a03169063f2d5d56b90339086905160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561205b57600080fd5b6102c65a03f1151561206c57600080fd5b5050506000848152601960205260409020600101541580611f3c57506000848152601960205260409020600101546611c37937e08000901161107157600080fd5b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a460125460ff161561211357600080fd5b60008381526019602052604090205433600160a060020a0390811691161461213a57600080fd5b612143836124d9565b1561215a5761215a83612155856124d9565b611197565b61216383610a70565b1561217a5761217a8361217585610a70565b611dd6565b505060009081526019602052604081208054600160a060020a0319168155600181018290556002810182905560030155565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a460008481526019602052604090205433600160a060020a0390811691161461222957600080fd5b600160a060020a038316151561223e57600080fd5b50506000918252601960205260409091208054600160a060020a031916600160a060020a03909216919091179055565b600054600160a060020a031681565b60135481565b600061228d611c32565b5060155490565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a461230033600035600160e060020a031916612615565b151561230b57600080fd5b505060078054600160a060020a031916600160a060020a0392909216919091179055565b600854600160a060020a031681565b600435602435808233600160a060020a031660008035600160e060020a0319169034903660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a46123aa33600035600160e060020a031916612615565b15156123b557600080fd5b505060098054600160a060020a031916600160a060020a0392909216919091179055565b60105481565b600090815260196020526040902054600160a060020a031690565b60006111446017546110a4612283565b60006110a9826110a461241b611548565b601154612792565b60008060008061243d6124346110bb565b6110a487610a70565b6007549093506124b090600160a060020a031663495d32cb6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561248c57600080fd5b6102c65a03f1151561249d57600080fd5b505050604051805190506110a4876124d9565b91506124be82600e5461271b565b90921015949350505050565b600b54600160a060020a031681565b6000818152601960205260408120600201546110a9906110a4612283565b60006004356024358082600160a060020a033316600160e060020a031986351634873660405183815260406020820181815290820183905260608201848480828437820191505094505050505060405180910390a460125460ff161561255c57600080fd5b6125696018546001612782565b6018819055600081815260196020526040908190208054600160a060020a03191633600160a060020a03169081179091559194507f89b8893b806db50897c8e2362c71571cfaeb9761ee40727f683f1793cda9df169085905190815260200160405180910390a2505090565b600a54600160a060020a031681565b6019602052600090815260409020805460018201546002830154600390930154600160a060020a0390921692909184565b600030600160a060020a031683600160a060020a03161415612639575060016110a9565b600154600160a060020a0384811691161415612657575060016110a9565b600054600160a060020a03161515612671575060006110a9565b60008054600160a060020a03169063b7009613908590309086906040516020015260405160e060020a63ffffffff8616028152600160a060020a039384166004820152919092166024820152600160e060020a03199091166044820152606401602060405180830381600087803b15156126ea57600080fd5b6102c65a03f115156126fb57600080fd5b5050506040518051949350505050565b808203828111156110a957600080fd5b60006b033b2e3c9fd0803ce800000061274d612737858561282e565b60026b033b2e3c9fd0803ce80000005b04612782565b81151561275657fe5b049392505050565b60008161274d61277a856b033b2e3c9fd0803ce800000061282e565b600285612747565b808201828110156110a957600080fd5b6000670de0b6b3a764000061274d6127aa858561282e565b6002670de0b6b3a7640000612747565b60008161274d61277a85670de0b6b3a764000061282e565b60006002820615156127f0576b033b2e3c9fd0803ce80000006127f2565b825b90506002820491505b81156110a95761280b838461271b565b9250600282061561282357612820818461271b565b90505b6002820491506127fb565b600081158061284b57505080820282828281151561284857fe5b04145b15156110a957600080fd00a165627a7a72305820ea44dc4fd11cb9cfac4feb3bb7d7020723d56b79a953b9c62e00db617a06e1000029
Verified Source Code Partial Match
Compiler: v0.4.19+commit.c4cbbb05
Optimization: Yes (200 runs)
SaiTub.sol 952 lines
// hevm: flattened sources of src/tub.sol
pragma solidity ^0.4.18;
////// lib/ds-guard/lib/ds-auth/src/auth.sol
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
/* pragma solidity ^0.4.13; */
contract DSAuthority {
function canCall(
address src, address dst, bytes4 sig
) public view returns (bool);
}
contract DSAuthEvents {
event LogSetAuthority (address indexed authority);
event LogSetOwner (address indexed owner);
}
contract DSAuth is DSAuthEvents {
DSAuthority public authority;
address public owner;
function DSAuth() public {
owner = msg.sender;
LogSetOwner(msg.sender);
}
function setOwner(address owner_)
public
auth
{
owner = owner_;
LogSetOwner(owner);
}
function setAuthority(DSAuthority authority_)
public
auth
{
authority = authority_;
LogSetAuthority(authority);
}
modifier auth {
require(isAuthorized(msg.sender, msg.sig));
_;
}
function isAuthorized(address src, bytes4 sig) internal view returns (bool) {
if (src == address(this)) {
return true;
} else if (src == owner) {
return true;
} else if (authority == DSAuthority(0)) {
return false;
} else {
return authority.canCall(src, this, sig);
}
}
}
////// lib/ds-spell/lib/ds-note/src/note.sol
/// note.sol -- the `note' modifier, for logging calls as events
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
/* pragma solidity ^0.4.13; */
contract DSNote {
event LogNote(
bytes4 indexed sig,
address indexed guy,
bytes32 indexed foo,
bytes32 indexed bar,
uint wad,
bytes fax
) anonymous;
modifier note {
bytes32 foo;
bytes32 bar;
assembly {
foo := calldataload(4)
bar := calldataload(36)
}
LogNote(msg.sig, msg.sender, foo, bar, msg.value, msg.data);
_;
}
}
////// lib/ds-thing/lib/ds-math/src/math.sol
/// math.sol -- mixin for inline numerical wizardry
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
/* pragma solidity ^0.4.13; */
contract DSMath {
function add(uint x, uint y) internal pure returns (uint z) {
require((z = x + y) >= x);
}
function sub(uint x, uint y) internal pure returns (uint z) {
require((z = x - y) <= x);
}
function mul(uint x, uint y) internal pure returns (uint z) {
require(y == 0 || (z = x * y) / y == x);
}
function min(uint x, uint y) internal pure returns (uint z) {
return x <= y ? x : y;
}
function max(uint x, uint y) internal pure returns (uint z) {
return x >= y ? x : y;
}
function imin(int x, int y) internal pure returns (int z) {
return x <= y ? x : y;
}
function imax(int x, int y) internal pure returns (int z) {
return x >= y ? x : y;
}
uint constant WAD = 10 ** 18;
uint constant RAY = 10 ** 27;
function wmul(uint x, uint y) internal pure returns (uint z) {
z = add(mul(x, y), WAD / 2) / WAD;
}
function rmul(uint x, uint y) internal pure returns (uint z) {
z = add(mul(x, y), RAY / 2) / RAY;
}
function wdiv(uint x, uint y) internal pure returns (uint z) {
z = add(mul(x, WAD), y / 2) / y;
}
function rdiv(uint x, uint y) internal pure returns (uint z) {
z = add(mul(x, RAY), y / 2) / y;
}
// This famous algorithm is called "exponentiation by squaring"
// and calculates x^n with x as fixed-point and n as regular unsigned.
//
// It's O(log n), instead of O(n) for naive repeated multiplication.
//
// These facts are why it works:
//
// If n is even, then x^n = (x^2)^(n/2).
// If n is odd, then x^n = x * x^(n-1),
// and applying the equation for even x gives
// x^n = x * (x^2)^((n-1) / 2).
//
// Also, EVM division is flooring and
// floor[(n-1) / 2] = floor[n / 2].
//
function rpow(uint x, uint n) internal pure returns (uint z) {
z = n % 2 != 0 ? x : RAY;
for (n /= 2; n != 0; n /= 2) {
x = rmul(x, x);
if (n % 2 != 0) {
z = rmul(z, x);
}
}
}
}
////// lib/ds-thing/src/thing.sol
// thing.sol - `auth` with handy mixins. your things should be DSThings
// Copyright (C) 2017 DappHub, LLC
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
/* pragma solidity ^0.4.13; */
/* import 'ds-auth/auth.sol'; */
/* import 'ds-note/note.sol'; */
/* import 'ds-math/math.sol'; */
contract DSThing is DSAuth, DSNote, DSMath {
function S(string s) internal pure returns (bytes4) {
return bytes4(keccak256(s));
}
}
////// lib/ds-token/lib/ds-stop/src/stop.sol
/// stop.sol -- mixin for enable/disable functionality
// Copyright (C) 2017 DappHub, LLC
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
/* pragma solidity ^0.4.13; */
/* import "ds-auth/auth.sol"; */
/* import "ds-note/note.sol"; */
contract DSStop is DSNote, DSAuth {
bool public stopped;
modifier stoppable {
require(!stopped);
_;
}
function stop() public auth note {
stopped = true;
}
function start() public auth note {
stopped = false;
}
}
////// lib/ds-token/lib/erc20/src/erc20.sol
/// erc20.sol -- API for the ERC20 token standard
// See <https://github.com/ethereum/EIPs/issues/20>.
// This file likely does not meet the threshold of originality
// required for copyright to apply. As a result, this is free and
// unencumbered software belonging to the public domain.
/* pragma solidity ^0.4.8; */
contract ERC20Events {
event Approval(address indexed src, address indexed guy, uint wad);
event Transfer(address indexed src, address indexed dst, uint wad);
}
contract ERC20 is ERC20Events {
function totalSupply() public view returns (uint);
function balanceOf(address guy) public view returns (uint);
function allowance(address src, address guy) public view returns (uint);
function approve(address guy, uint wad) public returns (bool);
function transfer(address dst, uint wad) public returns (bool);
function transferFrom(
address src, address dst, uint wad
) public returns (bool);
}
////// lib/ds-token/src/base.sol
/// base.sol -- basic ERC20 implementation
// Copyright (C) 2015, 2016, 2017 DappHub, LLC
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
/* pragma solidity ^0.4.13; */
/* import "erc20/erc20.sol"; */
/* import "ds-math/math.sol"; */
contract DSTokenBase is ERC20, DSMath {
uint256 _supply;
mapping (address => uint256) _balances;
mapping (address => mapping (address => uint256)) _approvals;
function DSTokenBase(uint supply) public {
_balances[msg.sender] = supply;
_supply = supply;
}
function totalSupply() public view returns (uint) {
return _supply;
}
function balanceOf(address src) public view returns (uint) {
return _balances[src];
}
function allowance(address src, address guy) public view returns (uint) {
return _approvals[src][guy];
}
function transfer(address dst, uint wad) public returns (bool) {
return transferFrom(msg.sender, dst, wad);
}
function transferFrom(address src, address dst, uint wad)
public
returns (bool)
{
if (src != msg.sender) {
_approvals[src][msg.sender] = sub(_approvals[src][msg.sender], wad);
}
_balances[src] = sub(_balances[src], wad);
_balances[dst] = add(_balances[dst], wad);
Transfer(src, dst, wad);
return true;
}
function approve(address guy, uint wad) public returns (bool) {
_approvals[msg.sender][guy] = wad;
Approval(msg.sender, guy, wad);
return true;
}
}
////// lib/ds-token/src/token.sol
/// token.sol -- ERC20 implementation with minting and burning
// Copyright (C) 2015, 2016, 2017 DappHub, LLC
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
/* pragma solidity ^0.4.13; */
/* import "ds-stop/stop.sol"; */
/* import "./base.sol"; */
contract DSToken is DSTokenBase(0), DSStop {
bytes32 public symbol;
uint256 public decimals = 18; // standard token precision. override to customize
function DSToken(bytes32 symbol_) public {
symbol = symbol_;
}
event Mint(address indexed guy, uint wad);
event Burn(address indexed guy, uint wad);
function approve(address guy) public stoppable returns (bool) {
return super.approve(guy, uint(-1));
}
function approve(address guy, uint wad) public stoppable returns (bool) {
return super.approve(guy, wad);
}
function transferFrom(address src, address dst, uint wad)
public
stoppable
returns (bool)
{
if (src != msg.sender && _approvals[src][msg.sender] != uint(-1)) {
_approvals[src][msg.sender] = sub(_approvals[src][msg.sender], wad);
}
_balances[src] = sub(_balances[src], wad);
_balances[dst] = add(_balances[dst], wad);
Transfer(src, dst, wad);
return true;
}
function push(address dst, uint wad) public {
transferFrom(msg.sender, dst, wad);
}
function pull(address src, uint wad) public {
transferFrom(src, msg.sender, wad);
}
function move(address src, address dst, uint wad) public {
transferFrom(src, dst, wad);
}
function mint(uint wad) public {
mint(msg.sender, wad);
}
function burn(uint wad) public {
burn(msg.sender, wad);
}
function mint(address guy, uint wad) public auth stoppable {
_balances[guy] = add(_balances[guy], wad);
_supply = add(_supply, wad);
Mint(guy, wad);
}
function burn(address guy, uint wad) public auth stoppable {
if (guy != msg.sender && _approvals[guy][msg.sender] != uint(-1)) {
_approvals[guy][msg.sender] = sub(_approvals[guy][msg.sender], wad);
}
_balances[guy] = sub(_balances[guy], wad);
_supply = sub(_supply, wad);
Burn(guy, wad);
}
// Optional token name
bytes32 public name = "";
function setName(bytes32 name_) public auth {
name = name_;
}
}
////// lib/ds-value/src/value.sol
/// value.sol - a value is a simple thing, it can be get and set
// Copyright (C) 2017 DappHub, LLC
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
/* pragma solidity ^0.4.13; */
/* import 'ds-thing/thing.sol'; */
contract DSValue is DSThing {
bool has;
bytes32 val;
function peek() public view returns (bytes32, bool) {
return (val,has);
}
function read() public view returns (bytes32) {
var (wut, haz) = peek();
assert(haz);
return wut;
}
function poke(bytes32 wut) public note auth {
val = wut;
has = true;
}
function void() public note auth { // unset the value
has = false;
}
}
////// src/vox.sol
/// vox.sol -- target price feed
// Copyright (C) 2016, 2017 Nikolai Mushegian <[email protected]>
// Copyright (C) 2016, 2017 Daniel Brockman <[email protected]>
// Copyright (C) 2017 Rain Break <[email protected]>
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
/* pragma solidity ^0.4.18; */
/* import "ds-thing/thing.sol"; */
contract SaiVox is DSThing {
uint256 _par;
uint256 _way;
uint256 public fix;
uint256 public how;
uint256 public tau;
function SaiVox(uint par_) public {
_par = fix = par_;
_way = RAY;
tau = era();
}
function era() public view returns (uint) {
return block.timestamp;
}
function mold(bytes32 param, uint val) public note auth {
if (param == 'way') _way = val;
}
// Dai Target Price (ref per dai)
function par() public returns (uint) {
prod();
return _par;
}
function way() public returns (uint) {
prod();
return _way;
}
function tell(uint256 ray) public note auth {
fix = ray;
}
function tune(uint256 ray) public note auth {
how = ray;
}
function prod() public note {
var age = era() - tau;
if (age == 0) return; // optimised
tau = era();
if (_way != RAY) _par = rmul(_par, rpow(_way, age)); // optimised
if (how == 0) return; // optimised
var wag = int128(how * age);
_way = inj(prj(_way) + (fix < _par ? wag : -wag));
}
function inj(int128 x) internal pure returns (uint256) {
return x >= 0 ? uint256(x) + RAY
: rdiv(RAY, RAY + uint256(-x));
}
function prj(uint256 x) internal pure returns (int128) {
return x >= RAY ? int128(x - RAY)
: int128(RAY) - int128(rdiv(RAY, x));
}
}
////// src/tub.sol
/// tub.sol -- simplified CDP engine (baby brother of `vat')
// Copyright (C) 2017 Nikolai Mushegian <[email protected]>
// Copyright (C) 2017 Daniel Brockman <[email protected]>
// Copyright (C) 2017 Rain Break <[email protected]>
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
/* pragma solidity ^0.4.18; */
/* import "ds-thing/thing.sol"; */
/* import "ds-token/token.sol"; */
/* import "ds-value/value.sol"; */
/* import "./vox.sol"; */
contract SaiTubEvents {
event LogNewCup(address indexed lad, bytes32 cup);
}
contract SaiTub is DSThing, SaiTubEvents {
DSToken public sai; // Stablecoin
DSToken public sin; // Debt (negative sai)
DSToken public skr; // Abstracted collateral
ERC20 public gem; // Underlying collateral
DSToken public gov; // Governance token
SaiVox public vox; // Target price feed
DSValue public pip; // Reference price feed
DSValue public pep; // Governance price feed
address public tap; // Liquidator
address public pit; // Governance Vault
uint256 public axe; // Liquidation penalty
uint256 public cap; // Debt ceiling
uint256 public mat; // Liquidation ratio
uint256 public tax; // Stability fee
uint256 public fee; // Governance fee
uint256 public gap; // Join-Exit Spread
bool public off; // Cage flag
bool public out; // Post cage exit
uint256 public fit; // REF per SKR (just before settlement)
uint256 public rho; // Time of last drip
uint256 _chi; // Accumulated Tax Rates
uint256 _rhi; // Accumulated Tax + Fee Rates
uint256 public rum; // Total normalised debt
uint256 public cupi;
mapping (bytes32 => Cup) public cups;
struct Cup {
address lad; // CDP owner
uint256 ink; // Locked collateral (in SKR)
uint256 art; // Outstanding normalised debt (tax only)
uint256 ire; // Outstanding normalised debt
}
function lad(bytes32 cup) public view returns (address) {
return cups[cup].lad;
}
function ink(bytes32 cup) public view returns (uint) {
return cups[cup].ink;
}
function tab(bytes32 cup) public returns (uint) {
return rmul(cups[cup].art, chi());
}
function rap(bytes32 cup) public returns (uint) {
return sub(rmul(cups[cup].ire, rhi()), tab(cup));
}
// Total CDP Debt
function din() public returns (uint) {
return rmul(rum, chi());
}
// Backing collateral
function air() public view returns (uint) {
return skr.balanceOf(this);
}
// Raw collateral
function pie() public view returns (uint) {
return gem.balanceOf(this);
}
//------------------------------------------------------------------
function SaiTub(
DSToken sai_,
DSToken sin_,
DSToken skr_,
ERC20 gem_,
DSToken gov_,
DSValue pip_,
DSValue pep_,
SaiVox vox_,
address pit_
) public {
gem = gem_;
skr = skr_;
sai = sai_;
sin = sin_;
gov = gov_;
pit = pit_;
pip = pip_;
pep = pep_;
vox = vox_;
axe = RAY;
mat = RAY;
tax = RAY;
fee = RAY;
gap = WAD;
_chi = RAY;
_rhi = RAY;
rho = era();
}
function era() public constant returns (uint) {
return block.timestamp;
}
//--Risk-parameter-config-------------------------------------------
function mold(bytes32 param, uint val) public note auth {
if (param == 'cap') cap = val;
else if (param == 'mat') { require(val >= RAY); mat = val; }
else if (param == 'tax') { require(val >= RAY); drip(); tax = val; }
else if (param == 'fee') { require(val >= RAY); drip(); fee = val; }
else if (param == 'axe') { require(val >= RAY); axe = val; }
else if (param == 'gap') { require(val >= WAD); gap = val; }
else return;
}
//--Price-feed-setters----------------------------------------------
function setPip(DSValue pip_) public note auth {
pip = pip_;
}
function setPep(DSValue pep_) public note auth {
pep = pep_;
}
function setVox(SaiVox vox_) public note auth {
vox = vox_;
}
//--Tap-setter------------------------------------------------------
function turn(address tap_) public note {
require(tap == 0);
require(tap_ != 0);
tap = tap_;
}
//--Collateral-wrapper----------------------------------------------
// Wrapper ratio (gem per skr)
function per() public view returns (uint ray) {
return skr.totalSupply() == 0 ? RAY : rdiv(pie(), skr.totalSupply());
}
// Join price (gem per skr)
function ask(uint wad) public view returns (uint) {
return rmul(wad, wmul(per(), gap));
}
// Exit price (gem per skr)
function bid(uint wad) public view returns (uint) {
return rmul(wad, wmul(per(), sub(2 * WAD, gap)));
}
function join(uint wad) public note {
require(!off);
require(ask(wad) > 0);
require(gem.transferFrom(msg.sender, this, ask(wad)));
skr.mint(msg.sender, wad);
}
function exit(uint wad) public note {
require(!off || out);
require(gem.transfer(msg.sender, bid(wad)));
skr.burn(msg.sender, wad);
}
//--Stability-fee-accumulation--------------------------------------
// Accumulated Rates
function chi() public returns (uint) {
drip();
return _chi;
}
function rhi() public returns (uint) {
drip();
return _rhi;
}
function drip() public note {
if (off) return;
var rho_ = era();
var age = rho_ - rho;
if (age == 0) return; // optimised
rho = rho_;
var inc = RAY;
if (tax != RAY) { // optimised
var _chi_ = _chi;
inc = rpow(tax, age);
_chi = rmul(_chi, inc);
sai.mint(tap, rmul(sub(_chi, _chi_), rum));
}
// optimised
if (fee != RAY) inc = rmul(inc, rpow(fee, age));
if (inc != RAY) _rhi = rmul(_rhi, inc);
}
//--CDP-risk-indicator----------------------------------------------
// Abstracted collateral price (ref per skr)
function tag() public view returns (uint wad) {
return off ? fit : wmul(per(), uint(pip.read()));
}
// Returns true if cup is well-collateralized
function safe(bytes32 cup) public returns (bool) {
var pro = rmul(tag(), ink(cup));
var con = rmul(vox.par(), tab(cup));
var min = rmul(con, mat);
return pro >= min;
}
//--CDP-operations--------------------------------------------------
function open() public note returns (bytes32 cup) {
require(!off);
cupi = add(cupi, 1);
cup = bytes32(cupi);
cups[cup].lad = msg.sender;
LogNewCup(msg.sender, cup);
}
function give(bytes32 cup, address guy) public note {
require(msg.sender == cups[cup].lad);
require(guy != 0);
cups[cup].lad = guy;
}
function lock(bytes32 cup, uint wad) public note {
require(!off);
cups[cup].ink = add(cups[cup].ink, wad);
skr.pull(msg.sender, wad);
require(cups[cup].ink == 0 || cups[cup].ink > 0.005 ether);
}
function free(bytes32 cup, uint wad) public note {
require(msg.sender == cups[cup].lad);
cups[cup].ink = sub(cups[cup].ink, wad);
skr.push(msg.sender, wad);
require(safe(cup));
require(cups[cup].ink == 0 || cups[cup].ink > 0.005 ether);
}
function draw(bytes32 cup, uint wad) public note {
require(!off);
require(msg.sender == cups[cup].lad);
require(rdiv(wad, chi()) > 0);
cups[cup].art = add(cups[cup].art, rdiv(wad, chi()));
rum = add(rum, rdiv(wad, chi()));
cups[cup].ire = add(cups[cup].ire, rdiv(wad, rhi()));
sai.mint(cups[cup].lad, wad);
require(safe(cup));
require(sai.totalSupply() <= cap);
}
function wipe(bytes32 cup, uint wad) public note {
require(!off);
var owe = rmul(wad, rdiv(rap(cup), tab(cup)));
cups[cup].art = sub(cups[cup].art, rdiv(wad, chi()));
rum = sub(rum, rdiv(wad, chi()));
cups[cup].ire = sub(cups[cup].ire, rdiv(add(wad, owe), rhi()));
sai.burn(msg.sender, wad);
var (val, ok) = pep.peek();
if (ok && val != 0) gov.move(msg.sender, pit, wdiv(owe, uint(val)));
}
function shut(bytes32 cup) public note {
require(!off);
require(msg.sender == cups[cup].lad);
if (tab(cup) != 0) wipe(cup, tab(cup));
if (ink(cup) != 0) free(cup, ink(cup));
delete cups[cup];
}
function bite(bytes32 cup) public note {
require(!safe(cup) || off);
// Take on all of the debt, except unpaid fees
var rue = tab(cup);
sin.mint(tap, rue);
rum = sub(rum, cups[cup].art);
cups[cup].art = 0;
cups[cup].ire = 0;
// Amount owed in SKR, including liquidation penalty
var owe = rdiv(rmul(rmul(rue, axe), vox.par()), tag());
if (owe > cups[cup].ink) {
owe = cups[cup].ink;
}
skr.push(tap, owe);
cups[cup].ink = sub(cups[cup].ink, owe);
}
//------------------------------------------------------------------
function cage(uint fit_, uint jam) public note auth {
require(!off && fit_ != 0);
off = true;
axe = RAY;
gap = WAD;
fit = fit_; // ref per skr
require(gem.transfer(tap, jam));
}
function flow() public note auth {
require(off);
out = true;
}
}
Read Contract
air 0x27e7e21e → uint256
ask 0xe47e7e66 → uint256
authority 0xbf7e214f → address
axe 0x509bf2bf → uint256
bid 0x454a2ab3 → uint256
cap 0x355274ea → uint256
cupi 0x49955431 → uint256
cups 0xfdac0025 → address, uint256, uint256, uint256
era 0x143e55e0 → uint256
fee 0xddca3f43 → uint256
fit 0xc8e13bb4 → uint256
gap 0x6c32c0a6 → uint256
gem 0x7bd2bea7 → address
gov 0x12d43a51 → address
ink 0x1f3634ed → uint256
lad 0xde5f5517 → address
mat 0xab0783da → uint256
off 0x6626b26d → bool
out 0xb2a1449b → bool
owner 0x8da5cb5b → address
pep 0xace237f5 → address
per 0x7ec9c3b8 → uint256
pie 0x8a95a746 → uint256
pip 0xd741e2f9 → address
pit 0xf03c7c6e → address
rho 0x20aba08b → uint256
rum 0x8cf0c191 → uint256
sai 0x9166cba4 → address
sin 0x071bafb5 → address
skr 0x0f8a771e → address
tag 0x51f91066 → uint256
tap 0xfd221031 → address
tax 0x99c8d556 → uint256
vox 0x67550a35 → address
Write Contract 26 functions
These functions modify contract state and require a wallet transaction to execute.
bite 0x40cc8854
bytes32 cup
cage 0x8ceedb47
uint256 fit_
uint256 jam
chi 0xc92aecc4
No parameters
returns: uint256
din 0xe0ae96e9
No parameters
returns: uint256
draw 0x440f19ba
bytes32 cup
uint256 wad
drip 0x9f678cca
No parameters
exit 0x7f8661a1
uint256 wad
flow 0x343aad82
No parameters
free 0xa5cd184e
bytes32 cup
uint256 wad
give 0xbaa8529c
bytes32 cup
address guy
join 0x049878f3
uint256 wad
lock 0xb3b77a51
bytes32 cup
uint256 wad
mold 0x92b0d721
bytes32 param
uint256 val
open 0xfcfff16f
No parameters
returns: bytes32
rap 0x6f78ee0d
bytes32 cup
returns: uint256
rhi 0x338a0261
No parameters
returns: uint256
safe 0xe95823ad
bytes32 cup
returns: bool
setAuthority 0x7a9e5e4b
address authority_
setOwner 0x13af4035
address owner_
setPep 0xd9c27cc6
address pep_
setPip 0x82bf9a75
address pip_
setVox 0xcf48d1a6
address vox_
shut 0xb84d2106
bytes32 cup
tab 0xf7c8d634
bytes32 cup
returns: uint256
turn 0x7e74325f
address tap_
wipe 0x73b38101
bytes32 cup
uint256 wad
Token Balances (1)
View Transfers →Recent Transactions
No transactions found for this address