Contract Overview
Balance:
0 Ether
EtherValue:
$0.00
More Info
Txn Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
0xf9b93e6ff85cf9ced69cc3e56c2d0ab60bfa5ed462d18b034942711daf2c35b7 | 0x60806040 | 8207230 | 1123 days 10 hrs ago | CraftR: Deployer | IN | Create: CraftrEscrow | 0 Ether | 0.00538383 |
[ Download CSV Export ]
Contract Name:
CraftrEscrow
Compiler Version
v0.5.10+commit.5a6ea5b1
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-07-23 */ pragma solidity 0.5.10; /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; assert(c / a == b); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address public owner; /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor() public { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { assert(msg.sender == owner); _; } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) onlyOwner public { assert(newOwner != address(0)); owner = newOwner; } } contract Token { mapping(address => mapping (address => uint256)) allowed; function transfer(address to, uint256 value) public returns (bool); function transferFrom(address from, address to, uint256 value) public returns (bool); } contract CraftrEscrow is Ownable { using SafeMath for uint256; Token CRAFTRToken; mapping (uint256 => Escrow) inEscrow; mapping (address => bool) public admins; uint256 round_interval = 12 hours; struct Escrow { address _from; address _to; uint256 _amount; uint256 _expiryTime; bool _accepted; bool _released; bool _denied; } modifier onlyVendor(address vendor, uint256 depositID) { assert(inEscrow[depositID]._to == vendor); _; } modifier onlyBuyer(address buyer, uint256 depositID) { assert(inEscrow[depositID]._from == buyer); _; } modifier onlyAdmin() { assert(msg.sender == owner || admins[msg.sender]); _; } event Deposit(address buyer, uint256 amount, uint256 depositID); event Accepted(address vendor, uint256 depositID); event Declined(address vendor, uint256 depositID); event Released(address buyer, address vendor, uint256 amount, uint256 depositID); event DepositReverted(address buyer, uint256 amount, uint256 depositID, address reverter); event DepositRevertedByOwner(); event TokensReleasedByOwner(address vendor, uint256 amount, uint256 depositID); event AdminAdded(address admin); event AdminRemoved(address admin); constructor(address _tokenContract) public { CRAFTRToken = Token(_tokenContract); } /** * @dev Allows a BUYER to deposit tokens into the contract. Useful information are mapped and * the countdown for the VENDOR is initialized. * @param amount The amount of tokens to deposit * @param to The VENDOR address * @return The deposit ID */ function deposit(uint256 amount, address to) public returns(uint256) { uint256 depositID = amount.add(now); inEscrow[depositID]._from = msg.sender; inEscrow[depositID]._to = to; inEscrow[depositID]._amount = amount; inEscrow[depositID]._expiryTime = now.add(round_interval); inEscrow[depositID]._accepted = false; inEscrow[depositID]._denied = false; inEscrow[depositID]._released = false; CRAFTRToken.transferFrom(msg.sender,address(this),amount); emit Deposit(msg.sender, amount, depositID); return depositID; } /** * @dev VENDOR accepts the deposit before the expiration * @param depositID The deposit ID */ function acceptDeposit(uint256 depositID) public onlyVendor(msg.sender, depositID) { require( now <= inEscrow[depositID]._expiryTime && !inEscrow[depositID]._denied && !inEscrow[depositID]._accepted ); inEscrow[depositID]._accepted = true; emit Accepted(msg.sender, depositID); } /** * @dev VENDOR cancels the deposit before the expiration * @param depositID The deposit ID */ function declineDeposit(uint256 depositID) public onlyVendor(msg.sender, depositID) { require( now <= inEscrow[depositID]._expiryTime && !inEscrow[depositID]._denied && !inEscrow[depositID]._accepted ); inEscrow[depositID]._denied = true; emit Declined(msg.sender, depositID); } /** * @dev BUYER releases the deposit to the VENDOR * @param depositID The deposit ID */ function releaseTokens(uint256 depositID) public onlyBuyer(msg.sender, depositID) { require( inEscrow[depositID]._accepted && !inEscrow[depositID]._denied && !inEscrow[depositID]._released ); CRAFTRToken.transfer(inEscrow[depositID]._to, inEscrow[depositID]._amount); inEscrow[depositID]._released = true; emit Released(msg.sender, inEscrow[depositID]._to, inEscrow[depositID]._amount, depositID); } /** * @dev BUYER reverts the deposit to itself * @param depositID The deposit ID */ function revertDeposit(uint256 depositID) public onlyBuyer(msg.sender, depositID) { require( ( now > inEscrow[depositID]._expiryTime && !inEscrow[depositID]._accepted && !inEscrow[depositID]._released && !inEscrow[depositID]._denied ) || ( inEscrow[depositID]._denied ) ); CRAFTRToken.transfer(msg.sender,inEscrow[depositID]._amount); emit DepositReverted(msg.sender, inEscrow[depositID]._amount, depositID, msg.sender); inEscrow[depositID]._released = true; } /** * @dev ADMIN reverts tokens to BUYER after a dispute resolution * @param depositID The deposit ID */ function adminRevertDeposit(uint256 depositID) public onlyAdmin { require( inEscrow[depositID]._accepted && !inEscrow[depositID]._released && !inEscrow[depositID]._denied ); CRAFTRToken.transfer(inEscrow[depositID]._from,inEscrow[depositID]._amount); emit DepositReverted(inEscrow[depositID]._from, inEscrow[depositID]._amount, depositID, msg.sender); inEscrow[depositID]._released = true; emit DepositRevertedByOwner(); } /** * @dev ADMIN releases tokens to VENDOR after a dispute resolution * @param depositID The deposit ID */ function adminReleaseTokens(uint256 depositID) public onlyAdmin { require( inEscrow[depositID]._accepted && !inEscrow[depositID]._released && !inEscrow[depositID]._denied ); CRAFTRToken.transfer(inEscrow[depositID]._to, inEscrow[depositID]._amount); inEscrow[depositID]._released = true; emit TokensReleasedByOwner(inEscrow[depositID]._to, inEscrow[depositID]._amount, depositID); } /** * @dev OWNER sets a new ADMIN * @param admin The address of the ADMIN */ function setAdmin(address admin) public onlyOwner { admins[admin] = true; emit AdminAdded(admin); } /** * @dev OWNER removes an ADMIN * @param admin The address of the ADMIN */ function unsetAdmin(address admin) public onlyOwner { admins[admin] = false; emit AdminRemoved(admin); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"name":"depositID","type":"uint256"}],"name":"adminRevertDeposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"depositID","type":"uint256"}],"name":"revertDeposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"admins","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"depositID","type":"uint256"}],"name":"acceptDeposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"depositID","type":"uint256"}],"name":"releaseTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"admin","type":"address"}],"name":"unsetAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"depositID","type":"uint256"}],"name":"declineDeposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"},{"name":"to","type":"address"}],"name":"deposit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"admin","type":"address"}],"name":"setAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"depositID","type":"uint256"}],"name":"adminReleaseTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_tokenContract","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"buyer","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"depositID","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"vendor","type":"address"},{"indexed":false,"name":"depositID","type":"uint256"}],"name":"Accepted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"vendor","type":"address"},{"indexed":false,"name":"depositID","type":"uint256"}],"name":"Declined","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"buyer","type":"address"},{"indexed":false,"name":"vendor","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"depositID","type":"uint256"}],"name":"Released","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"buyer","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"depositID","type":"uint256"},{"indexed":false,"name":"reverter","type":"address"}],"name":"DepositReverted","type":"event"},{"anonymous":false,"inputs":[],"name":"DepositRevertedByOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"vendor","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"depositID","type":"uint256"}],"name":"TokensReleasedByOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"admin","type":"address"}],"name":"AdminAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"admin","type":"address"}],"name":"AdminRemoved","type":"event"}]
Contract Creation Code
608060405261a8c060045534801561001657600080fd5b50604051610e80380380610e808339818101604052602081101561003957600080fd5b5051600080546001600160a01b03199081163317909155600180546001600160a01b0390931692909116919091179055610e08806100786000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806365202f8d1161007157806365202f8d1461018f5780636e553f65146101ac578063704b6c02146101ea5780638da5cb5b14610210578063a4ef109f14610234578063f2fde38b14610251576100b4565b806302177431146100b9578063319f0c0a146100d8578063429b62e5146100f5578063445fe4831461012f5780634b0babdd1461014c5780634d253b5014610169575b600080fd5b6100d6600480360360208110156100cf57600080fd5b5035610277565b005b6100d6600480360360208110156100ee57600080fd5b5035610446565b61011b6004803603602081101561010b57600080fd5b50356001600160a01b031661061b565b604080519115158252519081900360200190f35b6100d66004803603602081101561014557600080fd5b5035610630565b6100d66004803603602081101561016257600080fd5b5035610714565b6100d66004803603602081101561017f57600080fd5b50356001600160a01b03166108b4565b6100d6600480360360208110156101a557600080fd5b5035610920565b6101d8600480360360408110156101c257600080fd5b50803590602001356001600160a01b0316610a08565b60408051918252519081900360200190f35b6100d66004803603602081101561020057600080fd5b50356001600160a01b0316610b5a565b610218610bc9565b604080516001600160a01b039092168252519081900360200190f35b6100d66004803603602081101561024a57600080fd5b5035610bd8565b6100d66004803603602081101561026757600080fd5b50356001600160a01b0316610d77565b6000546001600160a01b031633148061029f57503360009081526003602052604090205460ff165b6102a557fe5b60008181526002602052604090206004015460ff1680156102dd5750600081815260026020526040902060040154610100900460ff16155b8015610301575060008181526002602052604090206004015462010000900460ff16155b61030a57600080fd5b60015460008281526002602081815260408084208054930154815163a9059cbb60e01b81526001600160a01b03948516600482015260248101919091529051929094169363a9059cbb93604480830194928390030190829087803b15801561037157600080fd5b505af1158015610385573d6000803e3d6000fd5b505050506040513d602081101561039b57600080fd5b5050600081815260026020818152604092839020805492015483516001600160a01b0390931683529082015280820183905233606082015290517fe6cd9de0b09270f1d16e4c263adca1289df3320ebac7b1bdb8e2f82cd6a608039181900360800190a1600081815260026020526040808220600401805461ff001916610100179055517f6d3234cd26cd6b23a6521cbc44818ab39a8080d677cf26dff4254a26a5f796149190a150565b600081815260026020526040902054339082906001600160a01b0316821461046a57fe5b6000838152600260205260409020600301544211801561049c575060008381526002602052604090206004015460ff16155b80156104bf5750600083815260026020526040902060040154610100900460ff16155b80156104e3575060008381526002602052604090206004015462010000900460ff16155b80610505575060008381526002602052604090206004015462010000900460ff165b61050e57600080fd5b600154600084815260026020818152604080842090920154825163a9059cbb60e01b8152336004820152602481019190915291516001600160a01b039094169363a9059cbb936044808501948390030190829087803b15801561057057600080fd5b505af1158015610584573d6000803e3d6000fd5b505050506040513d602081101561059a57600080fd5b50506000838152600260208181526040928390209091015482513380825292810191909152808301869052606081019190915290517fe6cd9de0b09270f1d16e4c263adca1289df3320ebac7b1bdb8e2f82cd6a608039181900360800190a150506000908152600260205260409020600401805461ff001916610100179055565b60036020526000908152604090205460ff1681565b600081815260026020526040902060010154339082906001600160a01b0316821461065757fe5b6000838152600260205260409020600301544211801590610690575060008381526002602052604090206004015462010000900460ff16155b80156106ae575060008381526002602052604090206004015460ff16155b6106b757600080fd5b600083815260026020908152604091829020600401805460ff19166001179055815133815290810185905281517fba19e87fb846feb0297591bc7d3f55ec0e3b289f88871a2bcfbe84d66fb47d4a929181900390910190a1505050565b600081815260026020526040902054339082906001600160a01b0316821461073857fe5b60008381526002602052604090206004015460ff168015610771575060008381526002602052604090206004015462010000900460ff16155b80156107945750600083815260026020526040902060040154610100900460ff16155b61079d57600080fd5b600180546000858152600260208181526040808420958601549590920154825163a9059cbb60e01b81526001600160a01b03968716600482015260248101919091529151949093169363a9059cbb9360448084019491938390030190829087803b15801561080a57600080fd5b505af115801561081e573d6000803e3d6000fd5b505050506040513d602081101561083457600080fd5b505060008381526002602081815260409283902060048101805461ff001916610100179055600181015492015483513381526001600160a01b0390931691830191909152818301526060810185905290517f29e9bc035f01bfa0da19263257dbbaeb34bf6c9c780d975b99cb802aecfcf1a29181900360800190a1505050565b6000546001600160a01b031633146108c857fe5b6001600160a01b038116600081815260036020908152604091829020805460ff19169055815192835290517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f9281900390910190a150565b600081815260026020526040902060010154339082906001600160a01b0316821461094757fe5b6000838152600260205260409020600301544211801590610980575060008381526002602052604090206004015462010000900460ff16155b801561099e575060008381526002602052604090206004015460ff16155b6109a757600080fd5b600083815260026020908152604091829020600401805462ff0000191662010000179055815133815290810185905281517ff01ffb9bc3b6819e56e3eb6e956320fb8f22e6226eb649778b2df18f2c61f5b9929181900390910190a1505050565b600080610a1b844263ffffffff610dbd16565b60008181526002602081905260409091208054336001600160a01b03199182161782556001820180549091166001600160a01b03881617905501859055600454909150610a69904290610dbd565b600082815260026020908152604080832060038101949094556004938401805462ffffff1916905560015481516323b872dd60e01b815233958101959095523060248601526044850189905290516001600160a01b03909116936323b872dd9360648083019493928390030190829087803b158015610ae757600080fd5b505af1158015610afb573d6000803e3d6000fd5b505050506040513d6020811015610b1157600080fd5b5050604080513381526020810186905280820183905290517f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159181900360600190a19392505050565b6000546001600160a01b03163314610b6e57fe5b6001600160a01b038116600081815260036020908152604091829020805460ff19166001179055815192835290517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3399281900390910190a150565b6000546001600160a01b031681565b6000546001600160a01b0316331480610c0057503360009081526003602052604090205460ff165b610c0657fe5b60008181526002602052604090206004015460ff168015610c3e5750600081815260026020526040902060040154610100900460ff16155b8015610c62575060008181526002602052604090206004015462010000900460ff16155b610c6b57600080fd5b600180546000838152600260208181526040808420958601549590920154825163a9059cbb60e01b81526001600160a01b03968716600482015260248101919091529151949093169363a9059cbb9360448084019491938390030190829087803b158015610cd857600080fd5b505af1158015610cec573d6000803e3d6000fd5b505050506040513d6020811015610d0257600080fd5b505060008181526002602081815260409283902060048101805461ff001916610100179055600181015492015483516001600160a01b0390931683529082015280820183905290517f2ba35f141f0a78120b0861d9d90987092c9aab2450bad4108ef268e9e6fa24a29181900360600190a150565b6000546001600160a01b03163314610d8b57fe5b6001600160a01b038116610d9b57fe5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b600082820183811015610dcc57fe5b939250505056fea265627a7a723058209c032037bda61d2814c7a479b70a38ea0d20303bd777cd68cd5b2d54cbec9e2064736f6c634300050a00320000000000000000000000002784dcd08f4b1bb25af84fd0b702e2aa5d5d1d64
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000002784dcd08f4b1bb25af84fd0b702e2aa5d5d1d64
-----Decoded View---------------
Arg [0] : _tokenContract (address): 0x2784dcd08f4b1bb25af84fd0b702e2aa5d5d1d64
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000002784dcd08f4b1bb25af84fd0b702e2aa5d5d1d64
Deployed ByteCode Sourcemap
2082:6608:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2082:6608:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7057:527;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7057:527:0;;:::i;:::-;;6273:644;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6273:644:0;;:::i;2231:39::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2231:39:0;-1:-1:-1;;;;;2231:39:0;;:::i;:::-;;;;;;;;;;;;;;;;;;4675:366;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4675:366:0;;:::i;5658:496::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5658:496:0;;:::i;8548:133::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8548:133:0;-1:-1:-1;;;;;8548:133:0;;:::i;5169:365::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5169:365:0;;:::i;3911:632::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3911:632:0;;;;;;-1:-1:-1;;;;;3911:632:0;;:::i;:::-;;;;;;;;;;;;;;;;8312:128;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8312:128:0;-1:-1:-1;;;;;8312:128:0;;:::i;1109:20::-;;;:::i;:::-;;;;-1:-1:-1;;;;;1109:20:0;;;;;;;;;;;;;;7726:478;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7726:478:0;;:::i;1684:143::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1684:143:0;-1:-1:-1;;;;;1684:143:0;;:::i;7057:527::-;2872:5;;-1:-1:-1;;;;;2872:5:0;2858:10;:19;;:41;;-1:-1:-1;2888:10:0;2881:18;;;;:6;:18;;;;;;;;2858:41;2851:49;;;;7159:19;;;;:8;:19;;;;;:29;;;;;:77;;;;-1:-1:-1;7207:19:0;;;;:8;:19;;;;;:29;;;;;;;;7206:30;7159:77;:123;;;;-1:-1:-1;7255:19:0;;;;:8;:19;;;;;:27;;;;;;;;7254:28;7159:123;7137:156;;;;;;7304:11;;;7325:19;;;:8;:19;;;;;;;;:25;;7351:27;;;7304:75;;-1:-1:-1;;;7304:75:0;;-1:-1:-1;;;;;7325:25:0;;;7304:75;;;;;;;;;;;;;:11;;;;;:20;;:75;;;;;;;;;;;;;:11;:75;;;5:2:-1;;;;30:1;27;20:12;5:2;7304:75:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7304:75:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;7411:19:0;;;;:8;7304:75;7411:19;;;;;;;;:25;;7438:27;;;7395:94;;-1:-1:-1;;;;;7411:25:0;;;7395:94;;;;;;;;;;;;7478:10;7395:94;;;;;;;;;;;;;;;7500:19;;;;:8;:19;;;;;;:29;;:36;;-1:-1:-1;;7500:36:0;;;;;7552:24;;;7500:19;7552:24;7057:527;:::o;6273:644::-;2751:19;;;;:8;:19;;;;;:25;6332:10;;6344:9;;-1:-1:-1;;;;;2751:25:0;:34;;2744:42;;;;6418:19;;;;:8;:19;;;;;:31;;;6412:3;:37;:89;;;;-1:-1:-1;6472:19:0;;;;:8;:19;;;;;:29;;;;;6471:30;6412:89;:141;;;;-1:-1:-1;6524:19:0;;;;:8;:19;;;;;:29;;;;;;;;6523:30;6412:141;:191;;;;-1:-1:-1;6576:19:0;;;;:8;:19;;;;;:27;;;;;;;;6575:28;6412:191;6393:290;;;-1:-1:-1;6641:19:0;;;;:8;:19;;;;;:27;;;;;;;;6393:290;6371:323;;;;;;6707:11;;;6739:19;;;:8;:19;;;;;;;;:27;;;;6707:60;;-1:-1:-1;;;6707:60:0;;6728:10;6707:60;;;;;;;;;;;;;-1:-1:-1;;;;;6707:11:0;;;;:20;;:60;;;;;;;;;;;;:11;:60;;;5:2:-1;;;;30:1;27;20:12;5:2;6707:60:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6707:60:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;6811:19:0;;;;:8;6707:60;6811:19;;;;;;;;:27;;;;6783:79;;6799:10;6783:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6873:19:0;;;;:8;:19;;;;;:29;;:36;;-1:-1:-1;;6873:36:0;;;;;6273:644::o;2231:39::-;;;;;;;;;;;;;;;:::o;4675:366::-;2609:19;;;;:8;:19;;;;;:23;;;4735:10;;4747:9;;-1:-1:-1;;;;;2609:23:0;:33;;2602:41;;;;4803:19;;;;:8;:19;;;;;:31;;;4796:3;:38;;;;:84;;-1:-1:-1;4853:19:0;;;;:8;:19;;;;;:27;;;;;;;;4852:28;4796:84;:132;;;;-1:-1:-1;4899:19:0;;;;:8;:19;;;;;:29;;;;;4898:30;4796:132;4774:165;;;;;;4950:19;;;;:8;:19;;;;;;;;;:29;;:36;;-1:-1:-1;;4950:36:0;4982:4;4950:36;;;5002:31;;5011:10;5002:31;;;;;;;;;;;;;;;;;;;;;4675:366;;;:::o;5658:496::-;2751:19;;;;:8;:19;;;;;:25;5717:10;;5729:9;;-1:-1:-1;;;;;2751:25:0;:34;;2744:42;;;;5779:19;;;;:8;:19;;;;;:29;;;;;:75;;;;-1:-1:-1;5827:19:0;;;;:8;:19;;;;;:27;;;;;;;;5826:28;5779:75;:123;;;;-1:-1:-1;5873:19:0;;;;:8;:19;;;;;:29;;;;;;;;5872:30;5779:123;5757:156;;;;;;5924:11;;;;5945:19;;;:8;:19;;;;;;;;:23;;;;5970:27;;;;;5924:74;;-1:-1:-1;;;5924:74:0;;-1:-1:-1;;;;;5945:23:0;;;5924:74;;;;;;;;;;;;;:11;;;;;:20;;:74;;;;;5945:19;;5924:74;;;;;;;:11;:74;;;5:2:-1;;;;30:1;27;20:12;5:2;5924:74:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5924:74:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;6009:19:0;;;;:8;5924:74;6009:19;;;;;;;;:29;;;:36;;-1:-1:-1;;6009:36:0;;;;;6041:4;6082:23;;;6107:27;;;6061:85;;6070:10;6061:85;;-1:-1:-1;;;;;6082:23:0;;;6061:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;5658:496;;;:::o;8548:133::-;1481:5;;-1:-1:-1;;;;;1481:5:0;1467:10;:19;1460:27;;;;-1:-1:-1;;;;;8617:13:0;;8633:5;8617:13;;;:6;:13;;;;;;;;;:21;;-1:-1:-1;;8617:21:0;;;8654:19;;;;;;;;;;;;;;;;;8548:133;:::o;5169:365::-;2609:19;;;;:8;:19;;;;;:23;;;5230:10;;5242:9;;-1:-1:-1;;;;;2609:23:0;:33;;2602:41;;;;5298:19;;;;:8;:19;;;;;:31;;;5291:3;:38;;;;:84;;-1:-1:-1;5348:19:0;;;;:8;:19;;;;;:27;;;;;;;;5347:28;5291:84;:132;;;;-1:-1:-1;5394:19:0;;;;:8;:19;;;;;:29;;;;;5393:30;5291:132;5269:165;;;;;;5445:19;;;;:8;:19;;;;;;;;;:27;;:34;;-1:-1:-1;;5445:34:0;;;;;5495:31;;5504:10;5495:31;;;;;;;;;;;;;;;;;;;;;5169:365;;;:::o;3911:632::-;3971:7;;4016:15;:6;4027:3;4016:15;:10;:15;:::i;:::-;4042:19;;;;:8;:19;;;;;;;;:38;;4070:10;-1:-1:-1;;;;;;4042:38:0;;;;;;-1:-1:-1;4091:23:0;;:28;;;;;-1:-1:-1;;;;;4091:28:0;;;;;4130:27;:36;;;4219:14;;4042:19;;-1:-1:-1;4211:23:0;;:3;;:7;:23::i;:::-;4177:19;;;;:8;:19;;;;;;;;:31;;;:57;;;;4245:29;;;;:37;;-1:-1:-1;;4339:37:0;;;4245;4387:11;:57;;-1:-1:-1;;;4387:57:0;;4412:10;4387:57;;;;;;;4431:4;4387:57;;;;;;;;;;;;-1:-1:-1;;;;;4387:11:0;;;;:24;;:57;;;;;4177:19;4387:57;;;;;;;;:11;:57;;;5:2:-1;;;;30:1;27;20:12;5:2;4387:57:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4387:57:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;4460:38:0;;;4468:10;4460:38;;4387:57;4460:38;;;;;;;;;;;;;;;;;;;;;;4526:9;3911:632;-1:-1:-1;;;3911:632:0:o;8312:128::-;1481:5;;-1:-1:-1;;;;;1481:5:0;1467:10;:19;1460:27;;;;-1:-1:-1;;;;;8379:13:0;;;;;;:6;:13;;;;;;;;;:20;;-1:-1:-1;;8379:20:0;8395:4;8379:20;;;8415:17;;;;;;;;;;;;;;;;;8312:128;:::o;1109:20::-;;;-1:-1:-1;;;;;1109:20:0;;:::o;7726:478::-;2872:5;;-1:-1:-1;;;;;2872:5:0;2858:10;:19;;:41;;-1:-1:-1;2888:10:0;2881:18;;;;:6;:18;;;;;;;;2858:41;2851:49;;;;7828:19;;;;:8;:19;;;;;:29;;;;;:77;;;;-1:-1:-1;7876:19:0;;;;:8;:19;;;;;:29;;;;;;;;7875:30;7828:77;:123;;;;-1:-1:-1;7924:19:0;;;;:8;:19;;;;;:27;;;;;;;;7923:28;7828:123;7806:156;;;;;;7973:11;;;;7994:19;;;:8;:19;;;;;;;;:23;;;;8019:27;;;;;7973:74;;-1:-1:-1;;;7973:74:0;;-1:-1:-1;;;;;7994:23:0;;;7973:74;;;;;;;;;;;;;:11;;;;;:20;;:74;;;;;7994:19;;7973:74;;;;;;;:11;:74;;;5:2:-1;;;;30:1;27;20:12;5:2;7973:74:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7973:74:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;8058:19:0;;;;:8;7973:74;8058:19;;;;;;;;:29;;;:36;;-1:-1:-1;;8058:36:0;;;;;8090:4;8132:23;;;8157:27;;;8110:86;;-1:-1:-1;;;;;8132:23:0;;;8110:86;;;;;;;;;;;;;;;;;;;;;;;7726:478;:::o;1684:143::-;1481:5;;-1:-1:-1;;;;;1481:5:0;1467:10;:19;1460:27;;;;-1:-1:-1;;;;;1769:22:0;;1762:30;;;;1803:5;:16;;-1:-1:-1;;;;;;1803:16:0;-1:-1:-1;;;;;1803:16:0;;;;;;;;;;1684:143::o;744:137::-;802:7;834:5;;;853:6;;;;846:14;;;;874:1;744:137;-1:-1:-1;;;744:137:0:o
Swarm Source
bzzr://9c032037bda61d2814c7a479b70a38ea0d20303bd777cd68cd5b2d54cbec9e20
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.