Contract Overview
Latest 25 from a total of 360 transactions
Contract Name:
DelegateProfile
Compiler Version
v0.4.24+commit.e67f0147
// File: contracts/library/Ownable.sol pragma solidity ^0.4.24; contract Ownable { address public owner; modifier onlyOwner { require(isOwner(msg.sender)); _; } function Ownable() public { owner = msg.sender; } function transferOwnership(address _newOwner) public onlyOwner { owner = _newOwner; } function isOwner(address _address) public view returns (bool) { return owner == _address; } } // File: contracts/library/Pausable.sol pragma solidity ^0.4.24; /** * @title Pausable * @dev Base contract which allows children to implement an emergency stop mechanism. */ contract Pausable is Ownable { event Pause(); event Unpause(); bool public paused = false; /** * @dev Modifier to make a function callable only when the contract is not paused. */ modifier whenNotPaused() { require(!paused); _; } /** * @dev Modifier to make a function callable only when the contract is paused. */ modifier whenPaused() { require(paused); _; } /** * @dev called by the owner to pause, triggers stopped state */ function pause() onlyOwner whenNotPaused public { paused = true; emit Pause(); } /** * @dev called by the owner to unpause, returns to normal state */ function unpause() onlyOwner whenPaused public { paused = false; emit Unpause(); } } // File: contracts/verifiers/Verifier.sol pragma solidity ^0.4.24; interface Verifier { function description() external view returns (string); function verify(bytes) external returns (bool); } // File: contracts/DelegateProfile.sol pragma solidity ^0.4.24; interface Register { function addrToIdx(address) external view returns (uint256); } /** * @title Register delegate details. * @author IoTeX Team */ contract DelegateProfile is Pausable { event FeeUpdated(uint256 fee); event ProfileUpdated(address delegate, string name, bytes value); event FieldDeprecated(string name); event NewField(string name); struct Field { Verifier verifier; bool deprecated; bool flag; } modifier onlyRegistered() { require(_registered(msg.sender), "not registered"); _; } Register public register; mapping(address => mapping(string => bytes)) private profiles; struct Profile { mapping(string => bytes) values; bool flag; } string[] public fieldNames; mapping(string => Field) private fields; constructor(address registerAddr) public { register = Register(registerAddr); } function _registered(address _addr) private view returns (bool) { if (address(register) == address(0)) { return true; } return register.addrToIdx(_addr) > 0; } function deprecated(string _name) internal view returns (bool) { require(fields[_name].flag, "undefined field name"); return fields[_name].deprecated; } function numOfFields() public view returns (uint256) { return fieldNames.length; } function getFieldByIndex(uint256 _idx) public view returns (string name_, Verifier verifier_, bool deprecated_) { require(_idx < numOfFields(), "field index out of boundary"); name_ = fieldNames[_idx]; verifier_ = fields[name_].verifier; deprecated_ = fields[name_].deprecated; } function getFieldByName(string _name) public view returns (Verifier verifier_, bool deprecated_) { require(fields[_name].flag, "undefined field name"); verifier_ = fields[_name].verifier; deprecated_ = fields[_name].deprecated; } function newFieldInternal(string _name, Verifier _verifier, bool _deprecated) internal { require(!fields[_name].flag, "duplicate field name"); fields[_name] = Field(_verifier, _deprecated, true); fieldNames.push(_name); emit NewField(_name); } function newField(string _name, address _verifierAddr) public onlyOwner { require(bytes(_name).length > 0, "field name cannot be empty"); newFieldInternal(_name, Verifier(_verifierAddr), false); } function deprecateField(string _name) public onlyOwner { require(fields[_name].flag, "undefined field"); fields[_name].deprecated = true; emit FieldDeprecated(_name); } function withdraw() public onlyOwner { msg.sender.transfer(address(this).balance); } function updateProfileInternal(address _delegate, string _name, bytes _value) internal { require(_value.length < 65536, "value too long"); require(!deprecated(_name), "deprecated field"); require(fields[_name].verifier.verify(_value), "invalid value"); profiles[_delegate][_name] = _value; emit ProfileUpdated(_delegate, _name, _value); } function updateProfile(string _name, bytes _value) public onlyRegistered whenNotPaused { updateProfileInternal(msg.sender, _name, _value); } function updateProfileForDelegate(address _delegate, string _name, bytes _value) public onlyOwner { require(_registered(_delegate), "not registered"); updateProfileInternal(_delegate, _name, _value); } function updateProfileWithByteCodeInternal(address delegate, bytes memory _byteCode) internal { uint256 l; string memory name; bytes memory value; uint256 i = 0; while (i < _byteCode.length) { // load name length l = toUint(_byteCode, i); require(l > 0, "invalid length"); i += 32; // load name name = string(slice(_byteCode, i, l)); i += l; // load value length l = toUint(_byteCode, i); i += 32; // load value value = slice(_byteCode, i, l); i += l; updateProfileInternal(delegate, name, value); } } function updateProfileWithByteCode(bytes memory _byteCode) public onlyRegistered whenNotPaused { updateProfileWithByteCodeInternal(msg.sender, _byteCode); } function updateProfileWithByteCodeForDelegate(address _delegate, bytes _byteCode) public onlyOwner { updateProfileWithByteCodeInternal(_delegate, _byteCode); } function getProfileByField(address _delegate, string _field) public view returns (bytes) { require(_registered(_delegate), "not registered"); return profiles[_delegate][_field]; } function getEncodedProfile(address _delegate) public view returns (bytes code_) { require(_registered(_delegate), "not registered"); uint256 l = 0; uint256 i; string memory fieldName; for (i = 0; i < fieldNames.length; i++) { fieldName = fieldNames[i]; if (!deprecated(fieldName)) { l += 64 + bytes(fieldName).length + profiles[_delegate][fieldName].length; } } code_ = new bytes(l); uint256 codePtr; // solium-disable-next-line security/no-inline-assembly assembly { codePtr := add(code_, 32) } for (i = 0; i < fieldNames.length; i++) { fieldName = fieldNames[i]; if (!deprecated(fieldName)) { codePtr = copy(codePtr, bytes(fieldName)); codePtr = copy(codePtr, profiles[_delegate][fieldName]); } } } function toUint(bytes memory _bytes, uint _start) internal pure returns (uint256 retval_) { require(_bytes.length >= (_start + 32), "invalid byte code"); // solium-disable-next-line security/no-inline-assembly assembly { retval_ := mload(add(add(_bytes, 32), _start)) } } function copy(uint _dest, bytes memory _src) internal pure returns (uint256) { uint256 l = _src.length + 32; uint256 offset = 0; for (; offset + 32 <= l; offset += 32) { // solium-disable-next-line security/no-inline-assembly assembly { mstore(add(_dest, offset), mload(add(_src, offset))) } } uint256 mask = 256 ** (32 - l % 32) - 1; // solium-disable-next-line security/no-inline-assembly assembly { let srcpart := and(mload(add(_src, offset)), not(mask)) let destpart := and(mload(add(_dest, offset)), mask) mstore(add(_dest, offset), or(destpart, srcpart)) } return _dest + 32 + _src.length; } function slice(bytes memory _bytes, uint _start, uint _length) internal pure returns (bytes memory) { require(_bytes.length >= (_start + _length), "invalid byte code"); bytes memory tempBytes; // solium-disable-next-line security/no-inline-assembly assembly { switch iszero(_length) case 0 { // Get a location of some free memory and store it in tempBytes as // Solidity does for memory variables. tempBytes := mload(0x40) // The first word of the slice result is potentially a partial // word read from the original array. To read it, we calculate // the length of that partial word and start copying that many // bytes into the array. The first word we copy will start with // data we don't care about, but the last `lengthmod` bytes will // land at the beginning of the contents of the new array. When // we're done copying, we overwrite the full first word with // the actual length of the slice. let lengthmod := and(_length, 31) // The multiplication in the next line is necessary // because when slicing multiples of 32 bytes (lengthmod == 0) // the following copy loop was copying the origin's length // and then ending prematurely not copying everything it should. let mc := add(add(tempBytes, lengthmod), mul(0x20, iszero(lengthmod))) let end := add(mc, _length) for { // The multiplication in the next line has the same exact purpose // as the one above. let cc := add(add(add(_bytes, lengthmod), mul(0x20, iszero(lengthmod))), _start) } lt(mc, end) { mc := add(mc, 0x20) cc := add(cc, 0x20) } { mstore(mc, mload(cc)) } mstore(tempBytes, _length) //update free-memory pointer //allocating the array padded to 32 bytes like the compiler does now mstore(0x40, and(add(mc, 31), not(31))) } //if we want a zero-length slice let's just return a zero-length array default { tempBytes := mload(0x40) mstore(0x40, add(tempBytes, 0x20)) } } return tempBytes; } }
[{"constant":false,"inputs":[{"name":"_delegate","type":"address"},{"name":"_name","type":"string"},{"name":"_value","type":"bytes"}],"name":"updateProfileForDelegate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"register","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_delegate","type":"address"}],"name":"getEncodedProfile","outputs":[{"name":"code_","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_name","type":"string"}],"name":"getFieldByName","outputs":[{"name":"verifier_","type":"address"},{"name":"deprecated_","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_byteCode","type":"bytes"}],"name":"updateProfileWithByteCode","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"},{"name":"_verifierAddr","type":"address"}],"name":"newField","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"},{"name":"_value","type":"bytes"}],"name":"updateProfile","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_idx","type":"uint256"}],"name":"getFieldByIndex","outputs":[{"name":"name_","type":"string"},{"name":"verifier_","type":"address"},{"name":"deprecated_","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_delegate","type":"address"},{"name":"_byteCode","type":"bytes"}],"name":"updateProfileWithByteCodeForDelegate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"fieldNames","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_delegate","type":"address"},{"name":"_field","type":"string"}],"name":"getProfileByField","outputs":[{"name":"","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"}],"name":"deprecateField","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"numOfFields","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"registerAddr","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"fee","type":"uint256"}],"name":"FeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"delegate","type":"address"},{"indexed":false,"name":"name","type":"string"},{"indexed":false,"name":"value","type":"bytes"}],"name":"ProfileUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"name","type":"string"}],"name":"FieldDeprecated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"name","type":"string"}],"name":"NewField","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"}]
Contract Creation Code
608060405260043610610112576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063199baa71146101175780631aa3a008146101e65780632652877e1461023d5780632f54bf6e146102f9578063363d62dd1461035457806337d1f437146104085780633ccfd60b146104715780633f4ba83a146104885780635c975abb1461049f57806368beafc8146104ce5780636eeb9b10146105575780638456cb59146106065780638ac834a31461061d5780638da5cb5b14610701578063ac468ebc14610758578063b2d3dd66146107e1578063cdcb1d5214610887578063e0adf83914610989578063e6ce112f146109f2578063f2fde38b14610a1d575b600080fd5b34801561012357600080fd5b506101e4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610a60565b005b3480156101f257600080fd5b506101fb610b01565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561024957600080fd5b5061027e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b27565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102be5780820151818401526020810190506102a3565b50505050905090810190601f1680156102eb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561030557600080fd5b5061033a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fdb565b604051808215151515815260200191505060405180910390f35b34801561036057600080fd5b506103bb600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611034565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390f35b34801561041457600080fd5b5061046f600480360381019080803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061123b565b005b34801561047d57600080fd5b506104866112e1565b005b34801561049457600080fd5b5061049d611355565b005b3480156104ab57600080fd5b506104b46113cc565b604051808215151515815260200191505060405180910390f35b3480156104da57600080fd5b50610555600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113df565b005b34801561056357600080fd5b50610604600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061147c565b005b34801561061257600080fd5b5061061b611524565b005b34801561062957600080fd5b506106486004803603810190808035906020019092919050505061159d565b60405180806020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183151515158152602001828103825285818151815260200191508051906020019080838360005b838110156106c45780820151818401526020810190506106a9565b50505050905090810190601f1680156106f15780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b34801561070d57600080fd5b506107166117ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561076457600080fd5b506107df600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061180f565b005b3480156107ed57600080fd5b5061080c60048036038101908080359060200190929190505050611831565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561084c578082015181840152602081019050610831565b50505050905090810190601f1680156108795780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561089357600080fd5b5061090e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506118ec565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561094e578082015181840152602081019050610933565b50505050905090810190601f16801561097b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561099557600080fd5b506109f0600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611ab4565b005b3480156109fe57600080fd5b50610a07611cde565b6040518082815260200191505060405180910390f35b348015610a2957600080fd5b50610a5e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ceb565b005b610a6933610fdb565b1515610a7457600080fd5b610a7d83611d42565b1515610af1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6e6f74207265676973746572656400000000000000000000000000000000000081525060200191505060405180910390fd5b610afc838383611ea6565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060008060606000610b3986611d42565b1515610bad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6e6f74207265676973746572656400000000000000000000000000000000000081525060200191505060405180910390fd5b60009350600092505b600380549050831015610d5b57600383815481101515610bd257fe5b906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610c705780601f10610c4557610100808354040283529160200191610c70565b820191906000526020600020905b815481529060010190602001808311610c5357829003601f168201915b50505050509150610c80826123af565b1515610d4e57600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020826040518082805190602001908083835b602083101515610cfb5780518252602082019150602081019050602083039250610cd6565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020805460018160011615610100020316600290049050825160400101840193505b8280600101935050610bb6565b836040519080825280601f01601f191660200182016040528015610d8e5781602001602082028038833980820191505090505b509450602085019050600092505b600380549050831015610fd257600383815481101515610db857fe5b906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e565780601f10610e2b57610100808354040283529160200191610e56565b820191906000526020600020905b815481529060010190602001808311610e3957829003601f168201915b50505050509150610e66826123af565b1515610fc557610e768183612524565b9050610fc281600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020846040518082805190602001908083835b602083101515610ef15780518252602082019150602081019050602083039250610ecc565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fb85780601f10610f8d57610100808354040283529160200191610fb8565b820191906000526020600020905b815481529060010190602001808311610f9b57829003601f168201915b5050505050612524565b90505b8280600101935050610d9c565b50505050919050565b60008173ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000806004836040518082805190602001908083835b60208310151561106f578051825260208201915060208101905060208303925061104a565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000160159054906101000a900460ff161515611127576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f756e646566696e6564206669656c64206e616d6500000000000000000000000081525060200191505060405180910390fd5b6004836040518082805190602001908083835b60208310151561115f578051825260208201915060208101905060208303925061113a565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691506004836040518082805190602001908083835b6020831015156111f057805182526020820191506020810190506020830392506111cb565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000160149054906101000a900460ff169050915091565b61124433611d42565b15156112b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6e6f74207265676973746572656400000000000000000000000000000000000081525060200191505060405180910390fd5b600060149054906101000a900460ff161515156112d457600080fd5b6112de3382612596565b50565b6112ea33610fdb565b15156112f557600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015611352573d6000803e3d6000fd5b50565b61135e33610fdb565b151561136957600080fd5b600060149054906101000a900460ff16151561138457600080fd5b60008060146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b600060149054906101000a900460ff1681565b6113e833610fdb565b15156113f357600080fd5b6000825111151561146c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f6669656c64206e616d652063616e6e6f7420626520656d70747900000000000081525060200191505060405180910390fd5b61147882826000612682565b5050565b61148533611d42565b15156114f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6e6f74207265676973746572656400000000000000000000000000000000000081525060200191505060405180910390fd5b600060149054906101000a900460ff1615151561151557600080fd5b611520338383611ea6565b5050565b61152d33610fdb565b151561153857600080fd5b600060149054906101000a900460ff1615151561155457600080fd5b6001600060146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b60606000806115aa611cde565b84101515611620576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f6669656c6420696e646578206f7574206f6620626f756e64617279000000000081525060200191505060405180910390fd5b60038481548110151561162f57fe5b906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156116cd5780601f106116a2576101008083540402835291602001916116cd565b820191906000526020600020905b8154815290600101906020018083116116b057829003601f168201915b505050505092506004836040518082805190602001908083835b60208310151561170c57805182526020820191506020810190506020830392506116e7565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691506004836040518082805190602001908083835b60208310151561179d5780518252602082019150602081019050602083039250611778565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000160149054906101000a900460ff1690509193909250565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61181833610fdb565b151561182357600080fd5b61182d8282612596565b5050565b60038181548110151561184057fe5b906000526020600020016000915090508054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118e45780601f106118b9576101008083540402835291602001916118e4565b820191906000526020600020905b8154815290600101906020018083116118c757829003601f168201915b505050505081565b60606118f783611d42565b151561196b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6e6f74207265676973746572656400000000000000000000000000000000000081525060200191505060405180910390fd5b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020826040518082805190602001908083835b6020831015156119e057805182526020820191506020810190506020830392506119bb565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611aa75780601f10611a7c57610100808354040283529160200191611aa7565b820191906000526020600020905b815481529060010190602001808311611a8a57829003601f168201915b5050505050905092915050565b611abd33610fdb565b1515611ac857600080fd5b6004816040518082805190602001908083835b602083101515611b005780518252602082019150602081019050602083039250611adb565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000160159054906101000a900460ff161515611bb8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f756e646566696e6564206669656c64000000000000000000000000000000000081525060200191505060405180910390fd5b60016004826040518082805190602001908083835b602083101515611bf25780518252602082019150602081019050602083039250611bcd565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000160146101000a81548160ff0219169083151502179055507ff47b35d35c737e18368ebfa5496bc97dabcea3e7b0075269da84fc32d0f201b8816040518080602001828103825283818151815260200191508051906020019080838360005b83811015611ca1578082015181840152602081019050611c86565b50505050905090810190601f168015611cce5780820380516001836020036101000a031916815260200191505b509250505060405180910390a150565b6000600380549050905090565b611cf433610fdb565b1515611cff57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611da35760019050611ea1565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f609695846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611e6257600080fd5b505af1158015611e76573d6000803e3d6000fd5b505050506040513d6020811015611e8c57600080fd5b81019080805190602001909291905050501190505b919050565b620100008151101515611f21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f76616c756520746f6f206c6f6e6700000000000000000000000000000000000081525060200191505060405180910390fd5b611f2a826123af565b151515611f9f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f64657072656361746564206669656c640000000000000000000000000000000081525060200191505060405180910390fd5b6004826040518082805190602001908083835b602083101515611fd75780518252602082019150602081019050602083039250611fb2565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638e760afe826040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b838110156120b557808201518184015260208101905061209a565b50505050905090810190601f1680156120e25780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561210157600080fd5b505af1158015612115573d6000803e3d6000fd5b505050506040513d602081101561212b57600080fd5b810190808051906020019092919050505015156121b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f696e76616c69642076616c75650000000000000000000000000000000000000081525060200191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020836040518082805190602001908083835b6020831015156122265780518252602082019150602081019050602083039250612201565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020908051906020019061226c929190612b02565b507f217aa5ef0b78f028d51fd573433bdbe2daf6f8505e6a71f3af1393c8440b341b838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156123075780820151818401526020810190506122ec565b50505050905090810190601f1680156123345780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561236d578082015181840152602081019050612352565b50505050905090810190601f16801561239a5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050565b60006004826040518082805190602001908083835b6020831015156123e957805182526020820191506020810190506020830392506123c4565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000160159054906101000a900460ff1615156124a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f756e646566696e6564206669656c64206e616d6500000000000000000000000081525060200191505060405180910390fd5b6004826040518082805190602001908083835b6020831015156124d957805182526020820191506020810190506020830392506124b4565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000160149054906101000a900460ff169050919050565b60008060008060208551019250600091505b8260208301111515612555578185015182870152602082019150612536565b600160208481151561256357fe5b066020036101000a0390508019828601511681838801511681811784890152505084516020870101935050505092915050565b600060608060008090505b845181101561267a576125b4858261297f565b935060008411151561262e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f696e76616c6964206c656e67746800000000000000000000000000000000000081525060200191505060405180910390fd5b60208101905061263f858286612a0c565b92508381019050612650858261297f565b9350602081019050612663858286612a0c565b91508381019050612675868484611ea6565b6125a1565b505050505050565b6004836040518082805190602001908083835b6020831015156126ba5780518252602082019150602081019050602083039250612695565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060000160159054906101000a900460ff16151515612773576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f6475706c6963617465206669656c64206e616d6500000000000000000000000081525060200191505060405180910390fd5b6060604051908101604052808373ffffffffffffffffffffffffffffffffffffffff1681526020018215158152602001600115158152506004846040518082805190602001908083835b6020831015156127e257805182526020820191506020810190506020830392506127bd565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548160ff02191690831515021790555060408201518160000160156101000a81548160ff02191690831515021790555090505060038390806001815401808255809150509060018203906000526020600020016000909192909190915090805190602001906128dc929190612b82565b50507f53096991d49a1876b3be4d7f3d107f7f92043e0fceec1e81b5ba38841d78123b836040518080602001828103825283818151815260200191508051906020019080838360005b83811015612940578082015181840152602081019050612925565b50505050905090810190601f16801561296d5780820380516001836020036101000a031916815260200191505b509250505060405180910390a1505050565b6000602082018351101515156129fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f696e76616c6964206279746520636f646500000000000000000000000000000081525060200191505060405180910390fd5b81602084010151905092915050565b606080828401855110151515612a8a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f696e76616c6964206279746520636f646500000000000000000000000000000081525060200191505060405180910390fd5b821560008114612aa557604051915060208201604052612af6565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612ae35780518352602083019250602081019050612ac6565b50868552601f19601f8301166040525050505b50809150509392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612b4357805160ff1916838001178555612b71565b82800160010185558215612b71579182015b82811115612b70578251825591602001919060010190612b55565b5b509050612b7e9190612c02565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612bc357805160ff1916838001178555612bf1565b82800160010185558215612bf1579182015b82811115612bf0578251825591602001919060010190612bd5565b5b509050612bfe9190612c02565b5090565b612c2491905b80821115612c20576000816000905550600101612c08565b5090565b905600a165627a7a7230582015441bba4a39f25a0d197088ec9612ae8a85ea54fd8a9197b63883a19c7861e00029
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for
interesting conversations.