Contract
0x326236f487ac37fc2cb69569b20173e9ccf639c9
5
Contract Overview
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Latest 1 internal transaction
Parent Txn Hash | Block | From | To | Value | |||
---|---|---|---|---|---|---|---|
0x20ee9daa6228f85d8b8df8e9f1e93a5b366befab269bf5844f555720241ca3de | 34627402 | 314 days 11 hrs ago | 0xf4c5b06ff9cd8f685ddcc58202597e56f1c0faee | Contract Creation | 0 FTM |
[ Download CSV Export ]
Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x09e9eb4847460cbb3dbee4b8e97d32e7fe5bf852
Contract Name:
Vyper_contract
Compiler Version
vyper:0.2.7
Contract Source Code (Vyper language format)
# @version 0.2.7 """ @title Fee Distribution @author Author @license MIT """ from vyper.interfaces import ERC20 interface VotingEscrow: def user_point_epoch(addr: address) -> uint256: view def epoch() -> uint256: view def user_point_history(addr: address, loc: uint256) -> Point: view def point_history(loc: uint256) -> Point: view def checkpoint(): nonpayable interface FeeDistributor: def checkpoint_token(): nonpayable def claim(_addr: address) -> uint256: nonpayable def claim_many(_receivers: address[20]) -> bool: nonpayable def toggle_allow_checkpoint_token(): nonpayable event CommitAdmin: admin: address event ApplyAdmin: admin: address event ToggleAllowCheckpointToken: toggle_flag: bool event CheckpointToken: time: uint256 tokens: uint256 event Claimed: recipient: indexed(address) amount: uint256 claim_epoch: uint256 max_epoch: uint256 struct Point: bias: int128 slope: int128 # - dweight / dt ts: uint256 blk: uint256 # block DAY: constant(uint256) = 86400 N_COINS: constant(uint256) = 10 start_time: public(uint256) time_cursor: public(uint256) time_cursor_of: public(HashMap[address, uint256]) user_epoch_of: public(HashMap[address, uint256]) blocked_addr: public(HashMap[address, bool]) fee_receive_addr: public(HashMap[address, address]) last_token_times: public(uint256[N_COINS]) tokens_per_day: public(HashMap[uint256, uint256[N_COINS]]) voting_escrow: public(address) tokens: public(address[N_COINS]) total_received: public(uint256) token_last_balances: public(uint256[N_COINS]) ve_supply: public(uint256[1000000000000000]) # VE total supply at day bounds admin: public(address) future_admin: public(address) can_checkpoint_token: public(bool) emergency_return: public(address) is_killed: public(bool) @external def __init__( _voting_escrow: address, _start_time: uint256, _token: address[N_COINS], _admin: address, _emergency_return: address ): """ @notice Contract constructor @param _voting_escrow VotingEscrow contract address @param _start_time Epoch time for fee distribution to start @param _token Fee token address @param _admin Admin address @param _emergency_return Address to transfer `_token` balance to if this contract is killed """ t: uint256 = _start_time / DAY * DAY self.start_time = t self.time_cursor = t for i in range(N_COINS): self.tokens[i] = _token[i] self.last_token_times[i] = t self.voting_escrow = _voting_escrow self.admin = _admin self.emergency_return = _emergency_return self.can_checkpoint_token = True @internal def _checkpoint_token(index: uint256): token_balance: uint256 = ERC20(self.tokens[index]).balanceOf(self) to_distribute: uint256 = token_balance - self.token_last_balances[index] self.token_last_balances[index] = token_balance t: uint256 = self.last_token_times[index] since_last: uint256 = block.timestamp - t self.last_token_times[index] = block.timestamp this_day: uint256 = t / DAY * DAY next_day: uint256 = 0 for i in range(140): next_day = this_day + DAY if block.timestamp < next_day: if since_last == 0 and block.timestamp == t: self.tokens_per_day[this_day][index] += to_distribute else: self.tokens_per_day[this_day][index] += to_distribute * (block.timestamp - t) / since_last break else: if since_last == 0 and next_day == t: self.tokens_per_day[this_day][index] += to_distribute else: self.tokens_per_day[this_day][index] += to_distribute * (next_day - t) / since_last t = next_day this_day = next_day log CheckpointToken(block.timestamp, to_distribute) @external def checkpoint_token(): """ @notice Update the token checkpoint @dev Calculates the total number of tokens to be distributed in a given day. During setup for the initial distribution this function is only callable by the contract owner. Beyond initial distro, it can be enabled for anyone to call. """ assert (msg.sender == self.admin) or\ (self.can_checkpoint_token and (block.timestamp > self.last_token_times[0])) for i in range(N_COINS): self._checkpoint_token(i) @internal def _find_timestamp_epoch(ve: address, _timestamp: uint256) -> uint256: _min: uint256 = 0 _max: uint256 = VotingEscrow(ve).epoch() for i in range(128): if _min >= _max: break _mid: uint256 = (_min + _max + 2) / 2 pt: Point = VotingEscrow(ve).point_history(_mid) if pt.ts <= _timestamp: _min = _mid else: _max = _mid - 1 return _min @view @internal def _find_timestamp_user_epoch(ve: address, user: address, _timestamp: uint256, max_user_epoch: uint256) -> uint256: _min: uint256 = 0 _max: uint256 = max_user_epoch for i in range(128): if _min >= _max: break _mid: uint256 = (_min + _max + 2) / 2 pt: Point = VotingEscrow(ve).user_point_history(user, _mid) if pt.ts <= _timestamp: _min = _mid else: _max = _mid - 1 return _min @view @external def ve_for_at(_user: address, _timestamp: uint256) -> uint256: """ @notice Get the xLQDR balance for `_user` at `_timestamp` @param _user Address to query balance for @param _timestamp Epoch time @return uint256 xLQDR balance """ ve: address = self.voting_escrow max_user_epoch: uint256 = VotingEscrow(ve).user_point_epoch(_user) epoch: uint256 = self._find_timestamp_user_epoch(ve, _user, _timestamp, max_user_epoch) pt: Point = VotingEscrow(ve).user_point_history(_user, epoch) return convert(max(pt.bias - pt.slope * convert(_timestamp - pt.ts, int128), 0), uint256) @internal def _checkpoint_total_supply(): ve: address = self.voting_escrow t: uint256 = self.time_cursor rounded_timestamp: uint256 = block.timestamp / DAY * DAY VotingEscrow(ve).checkpoint() for i in range(140): if t > rounded_timestamp: break else: epoch: uint256 = self._find_timestamp_epoch(ve, t) pt: Point = VotingEscrow(ve).point_history(epoch) dt: int128 = 0 if t > pt.ts: # If the point is at 0 epoch, it can actually be earlier than the first deposit # Then make dt 0 dt = convert(t - pt.ts, int128) self.ve_supply[t] = convert(max(pt.bias - pt.slope * dt, 0), uint256) t += DAY self.time_cursor = t @external def checkpoint_total_supply(): """ @notice Update the xLQDR total supply checkpoint @dev The checkpoint is also updated by the first claimant each new epoch day. This function may be called independently of a claim, to reduce claiming gas costs. """ self._checkpoint_total_supply() @external def block_address(_blocked_addr: address, _fee_receive_addr: address): assert msg.sender == self.admin # dev: access denied self.blocked_addr[_blocked_addr] = True self.fee_receive_addr[_blocked_addr] = _fee_receive_addr @internal def _claim(addr: address, ve: address, _last_token_time: uint256) -> uint256[N_COINS]: # Minimal user_epoch is 0 (if user had no point) user_epoch: uint256 = 0 to_distribute: uint256[N_COINS] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] max_user_epoch: uint256 = VotingEscrow(ve).user_point_epoch(addr) _start_time: uint256 = self.start_time if max_user_epoch == 0: # No lock = no fees return to_distribute day_cursor: uint256 = self.time_cursor_of[addr] if day_cursor == 0: # Need to do the initial binary search user_epoch = self._find_timestamp_user_epoch(ve, addr, _start_time, max_user_epoch) else: user_epoch = self.user_epoch_of[addr] if user_epoch == 0: user_epoch = 1 user_point: Point = VotingEscrow(ve).user_point_history(addr, user_epoch) if day_cursor == 0: day_cursor = (user_point.ts + DAY - 1) / DAY * DAY if day_cursor >= _last_token_time: return to_distribute if day_cursor < _start_time: day_cursor = _start_time old_user_point: Point = empty(Point) # Iterate over days for i in range(150): if day_cursor >= _last_token_time: break if day_cursor >= user_point.ts and user_epoch <= max_user_epoch: user_epoch += 1 old_user_point = user_point if user_epoch > max_user_epoch: user_point = empty(Point) else: user_point = VotingEscrow(ve).user_point_history(addr, user_epoch) else: # Calc # + i * 2 is for rounding errors dt: int128 = convert(day_cursor - old_user_point.ts, int128) balance_of: uint256 = convert(max(old_user_point.bias - dt * old_user_point.slope, 0), uint256) if balance_of == 0 and user_epoch > max_user_epoch: break if balance_of > 0: for j in range(N_COINS): to_distribute[j] += balance_of * self.tokens_per_day[day_cursor][j] / self.ve_supply[day_cursor] day_cursor += DAY user_epoch = min(max_user_epoch, user_epoch - 1) self.user_epoch_of[addr] = user_epoch self.time_cursor_of[addr] = day_cursor _fee_receiver: address = addr if self.blocked_addr[addr] == True: _fee_receiver = self.fee_receive_addr[addr] for i in range(N_COINS): if to_distribute[i] != 0: token: address = self.tokens[i] assert ERC20(token).transfer(_fee_receiver, to_distribute[i]) self.token_last_balances[i] -= to_distribute[i] log Claimed(addr, to_distribute[i], user_epoch, max_user_epoch) return to_distribute @external @nonreentrant('lock') def claim(_addr: address = msg.sender) -> (uint256[N_COINS]): """ @notice Claim fees for `_addr` @dev Each call to claim look at a maximum of 50 user xLQDR points. For accounts with many xLQDR related actions, this function may need to be called more than once to claim all available fees. In the `Claimed` event that fires, if `claim_epoch` is less than `max_epoch`, the account may claim again. @param _addr Address to claim fees for @return uint256 Amount of fees claimed in the call """ assert not self.is_killed if block.timestamp >= self.time_cursor: self._checkpoint_total_supply() last_token_time: uint256 = self.last_token_times[0] if self.can_checkpoint_token and (block.timestamp > last_token_time): for i in range(N_COINS): self._checkpoint_token(i) last_token_time = block.timestamp last_token_time = last_token_time / DAY * DAY return self._claim(_addr, self.voting_escrow, last_token_time) @external @nonreentrant('lock') def claim_many(_receivers: address[20]) -> bool: """ @notice Make multiple fee claims in a single call @dev Used to claim for many accounts at once, or to make multiple claims for the same address when that address has significant xLQDR history @param _receivers List of addresses to claim for. Claiming terminates at the first `ZERO_ADDRESS`. @return bool success """ assert not self.is_killed if block.timestamp >= self.time_cursor: self._checkpoint_total_supply() last_token_time: uint256 = self.last_token_times[0] if self.can_checkpoint_token and (block.timestamp > last_token_time): for i in range(N_COINS): self._checkpoint_token(i) last_token_time = block.timestamp last_token_time = last_token_time / DAY * DAY voting_escrow: address = self.voting_escrow for addr in _receivers: if addr == ZERO_ADDRESS: break self._claim(addr, voting_escrow, last_token_time) return True @external def burn(_coin: address) -> bool: """ @notice Receive LQDR into the contract and trigger a token checkpoint @param _coin Address of the coin being received (must be LQDR) @return bool success """ assert not self.is_killed amount: uint256 = ERC20(_coin).balanceOf(msg.sender) if amount != 0: ERC20(_coin).transferFrom(msg.sender, self, amount) if self.can_checkpoint_token and (block.timestamp > self.last_token_times[0]): for i in range(N_COINS): self._checkpoint_token(i) return True @external def commit_admin(_addr: address): """ @notice Commit transfer of ownership @param _addr New admin address """ assert msg.sender == self.admin # dev: access denied self.future_admin = _addr log CommitAdmin(_addr) @external def apply_admin(): """ @notice Apply transfer of ownership """ assert msg.sender == self.admin assert self.future_admin != ZERO_ADDRESS future_admin: address = self.future_admin self.admin = future_admin log ApplyAdmin(future_admin) @external def toggle_allow_checkpoint_token(): """ @notice Toggle permission for checkpointing by any account """ assert msg.sender == self.admin flag: bool = not self.can_checkpoint_token self.can_checkpoint_token = flag log ToggleAllowCheckpointToken(flag) @external def kill_me(): """ @notice Kill the contract @dev Killing transfers the entire LQDR balance to the emergency return address and blocks the ability to claim or burn. The contract cannot be unkilled. """ assert msg.sender == self.admin self.is_killed = True for i in range(N_COINS): token: address = self.tokens[i] assert ERC20(token).transfer(self.emergency_return, ERC20(token).balanceOf(self)) @external def recover_balance(_coin: address) -> bool: """ @notice Recover ERC20 tokens from this contract @dev Tokens are sent to the emergency return address. @param _coin Token address @return bool success """ assert msg.sender == self.admin amount: uint256 = ERC20(_coin).balanceOf(self) response: Bytes[32] = raw_call( _coin, concat( method_id("transfer(address,uint256)"), convert(self.emergency_return, bytes32), convert(amount, bytes32), ), max_outsize=32, ) if len(response) != 0: assert convert(response, bool) return True @external def set_emergency_return(_addr: address) -> bool: """ @notice Set emergency return address @dev Set emergency return address. @param _addr New emergency address @return bool success """ assert msg.sender == self.admin self.emergency_return = _addr return True # for test purpose @view @external def get_timestamp() -> uint256: """ @notice Get current timestamp @return uint256 timestamp """ return block.timestamp
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"name":"CommitAdmin","inputs":[{"type":"address","name":"admin","indexed":false}],"anonymous":false,"type":"event"},{"name":"ApplyAdmin","inputs":[{"type":"address","name":"admin","indexed":false}],"anonymous":false,"type":"event"},{"name":"ToggleAllowCheckpointToken","inputs":[{"type":"bool","name":"toggle_flag","indexed":false}],"anonymous":false,"type":"event"},{"name":"CheckpointToken","inputs":[{"type":"uint256","name":"time","indexed":false},{"type":"uint256","name":"tokens","indexed":false}],"anonymous":false,"type":"event"},{"name":"Claimed","inputs":[{"type":"address","name":"recipient","indexed":true},{"type":"uint256","name":"amount","indexed":false},{"type":"uint256","name":"claim_epoch","indexed":false},{"type":"uint256","name":"max_epoch","indexed":false}],"anonymous":false,"type":"event"},{"outputs":[],"inputs":[{"type":"address","name":"_voting_escrow"},{"type":"uint256","name":"_start_time"},{"type":"address[10]","name":"_token"},{"type":"address","name":"_admin"},{"type":"address","name":"_emergency_return"}],"stateMutability":"nonpayable","type":"constructor"},{"name":"checkpoint_token","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":52865108},{"name":"ve_for_at","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"_user"},{"type":"uint256","name":"_timestamp"}],"stateMutability":"view","type":"function","gas":249417},{"name":"checkpoint_total_supply","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":73909685},{"name":"block_address","outputs":[],"inputs":[{"type":"address","name":"_blocked_addr"},{"type":"address","name":"_fee_receive_addr"}],"stateMutability":"nonpayable","type":"function","gas":71764},{"name":"claim","outputs":[{"type":"uint256[10]","name":""}],"inputs":[],"stateMutability":"nonpayable","type":"function"},{"name":"claim","outputs":[{"type":"uint256[10]","name":""}],"inputs":[{"type":"address","name":"_addr"}],"stateMutability":"nonpayable","type":"function"},{"name":"claim_many","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address[20]","name":"_receivers"}],"stateMutability":"nonpayable","type":"function","gas":227475864},{"name":"burn","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"_coin"}],"stateMutability":"nonpayable","type":"function","gas":52867064},{"name":"commit_admin","outputs":[],"inputs":[{"type":"address","name":"_addr"}],"stateMutability":"nonpayable","type":"function","gas":37928},{"name":"apply_admin","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":39564},{"name":"toggle_allow_checkpoint_token","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":38703},{"name":"kill_me","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":68685},{"name":"recover_balance","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"_coin"}],"stateMutability":"nonpayable","type":"function","gas":6911},{"name":"set_emergency_return","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"_addr"}],"stateMutability":"nonpayable","type":"function","gas":36773},{"name":"get_timestamp","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":800},{"name":"start_time","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1631},{"name":"time_cursor","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1661},{"name":"time_cursor_of","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":1906},{"name":"user_epoch_of","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":1936},{"name":"blocked_addr","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":1966},{"name":"fee_receive_addr","outputs":[{"type":"address","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":1996},{"name":"last_token_times","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"arg0"}],"stateMutability":"view","type":"function","gas":1920},{"name":"tokens_per_day","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"arg0"},{"type":"uint256","name":"arg1"}],"stateMutability":"view","type":"function","gas":2065},{"name":"voting_escrow","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1871},{"name":"tokens","outputs":[{"type":"address","name":""}],"inputs":[{"type":"uint256","name":"arg0"}],"stateMutability":"view","type":"function","gas":2010},{"name":"total_received","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1931},{"name":"token_last_balances","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"arg0"}],"stateMutability":"view","type":"function","gas":2070},{"name":"ve_supply","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"arg0"}],"stateMutability":"view","type":"function","gas":2100},{"name":"admin","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2021},{"name":"future_admin","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2051},{"name":"can_checkpoint_token","outputs":[{"type":"bool","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2081},{"name":"emergency_return","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2111},{"name":"is_killed","outputs":[{"type":"bool","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2141}]
Contract Creation Code
6f7fffffffffffffffffffffffffffffff6040526101c061242c61014039602061242c60c03960c05160a01c1561003557600080fd5b6000610120525b60206101205160400161242c0160c03960c05160a01c1561005c57600080fd5b60206101205101610120526101406101205110156100795761003c565b602061018061242c0160c03960c05160a01c1561009557600080fd5b60206101a061242c0160c03960c05160a01c156100b157600080fd5b6101605162015180808204905090506201518080820282158284830414176100d857600080fd5b809050905090506103005261030051600055610300516001556103206000600a818352015b61018061032051600a811061011157600080fd5b602002015161032051600a811061012757600080fd5b600960c052602060c02001556103005161032051600a811061014857600080fd5b600660c052602060c02001555b81516001018083528114156100fd575b5050610140516008556102c051600d556102e0516010556001600f5561241456341561000a57600080fd5b600436101561001857612288565b600035601c526f7fffffffffffffffffffffffffffffff60405260001561042e575b6101605261014052602061022060246370a082316101a052306101c0526101bc61014051600a811061006b57600080fd5b600960c052602060c02001545afa61008257600080fd5b601f3d1161008f57600080fd5b60005061022051610180526101805161014051600a81106100af57600080fd5b600b60c052602060c0200154808210156100c857600080fd5b808203905090506101a0526101805161014051600a81106100e857600080fd5b600b60c052602060c020015561014051600a811061010557600080fd5b600660c052602060c02001546101c052426101c0518082101561012757600080fd5b808203905090506101e0524261014051600a811061014457600080fd5b600660c052602060c02001556101c051620151808082049050905062015180808202821582848304141761017757600080fd5b80905090509050610200526000610220526102406000608c818352015b61020051620151808181830110156101ab57600080fd5b8082019050905061022052610220514210156102ca576101e05115156101d6576101c05142146101d9565b60005b1561022d5761014051600a81106101ef57600080fd5b60076102005160e05260c052604060c02060c052602060c0200180546101a05181818301101561021e57600080fd5b808201905090508155506102c1565b61014051600a811061023e57600080fd5b60076102005160e05260c052604060c02060c052602060c0200180546101a051426101c0518082101561027057600080fd5b80820390509050808202821582848304141761028b57600080fd5b809050905090506101e05180806102a157600080fd5b8204905090508181830110156102b657600080fd5b808201905090508155505b6103f2566103d1565b6101e05115156102e2576101c05161022051146102e5565b60005b156103395761014051600a81106102fb57600080fd5b60076102005160e05260c052604060c02060c052602060c0200180546101a05181818301101561032a57600080fd5b808201905090508155506103d0565b61014051600a811061034a57600080fd5b60076102005160e05260c052604060c02060c052602060c0200180546101a051610220516101c0518082101561037f57600080fd5b80820390509050808202821582848304141761039a57600080fd5b809050905090506101e05180806103b057600080fd5b8204905090508181830110156103c557600080fd5b808201905090508155505b5b610220516101c05261022051610200525b8151600101808352811415610194575b505042610240526101a051610260527fce749457b74e10f393f2c6b1ce4261b78791376db5a3f501477a809f03f500d66040610240a161016051565b63811a40fe60005114156104b657600d5433141561044d57600161046b565b600f541561046757600660c052602060c02054421161046a565b60005b5b5b61047557600080fd5b6101406000600a818352015b610140516101405161016052610160516006580161003a565b610140526000505b8151600101808352811415610481575b5050005b600015610671575b61018052610140526101605260006101a0526020610240600463900cf0cf6101e0526101fc610140515afa6104f257600080fd5b601f3d116104ff57600080fd5b600050610240516101c0526101e060006080818352015b6101c0516101a05110151561052a5761065d565b6101a0516101c05181818301101561054157600080fd5b80820190509050600281818301101561055957600080fd5b80820190509050600280820490509050610200526102206080610320602463d1febfb96102a052610200516102c0526102bc610140515afa61059a57600080fd5b607f3d116105a757600080fd5b61032080808080516103a0525050602081019050808080516103c0525050602081019050808080516103e05250506020810190508080805161040052505050506000506103a0805182528060200151826020015280604001518260400152806060015182606001525050610160516102605111151561062d57610200516101a05261064c565b6102005160018082101561064057600080fd5b808203905090506101c0525b5b8151600101808352811415610516575b50506101a051600052600051610180515650005b60001561080a575b6101c0526101405261016052610180526101a05260006101e0526101a0516102005261022060006080818352015b610200516101e0511015156106bb576107f6565b6101e051610200518181830110156106d257600080fd5b8082019050905060028181830110156106ea57600080fd5b8082019050905060028082049050905061024052610260608061038060446328d09d476102e052610160516103005261024051610320526102fc610140515afa61073357600080fd5b607f3d1161074057600080fd5b61038080808080516104005250506020810190508080805161042052505060208101905080808051610440525050602081019050808080516104605250505050600050610400805182528060200151826020015280604001518260400152806060015182606001525050610180516102a0511115156107c657610240516101e0526107e5565b610240516001808210156107d957600080fd5b80820390509050610200525b5b81516001018083528114156106a7575b50506101e0516000526000516101c0515650005b63ace296fb6000511415610a1d5760043560a01c1561082857600080fd5b600854610140526020610200602463010ae757610180526004356101a05261019c610140515afa61085857600080fd5b601f3d1161086557600080fd5b6000506102005161016052610140516101605161018051610140516101a0526004356101c0526024356101e0526101605161020052610200516101e0516101c0516101a05160065801610679565b6102605261018052610160526101405261026051610180526101a060806102c060446328d09d476102205260043561024052610180516102605261023c610140515afa6108ff57600080fd5b607f3d1161090c57600080fd5b6102c080808080516103405250506020810190508080805161036052505060208101905080808051610380525050602081019050808080516103a052505050506000506103408051825280602001518260200152806040015182604001528060600151826060015250506101a0516101c0516024356101e0518082101561099257600080fd5b808203905090506040518111156109a857600080fd5b808202808060008112156109b857195b607f1c156109c557600080fd5b905090509050808203808060008112156109db57195b607f1c156109e857600080fd5b9050905090506000808212156109fe5780610a00565b815b905090506000811215610a1257600080fd5b60005260206000f350005b600015610cdb575b610140526008546101605260015461018052426201518080820490509050620151808082028215828483041417610a5b57600080fd5b809050905090506101a052610160513b610a7457600080fd5b60006000600463c2c4c5c16101c0526101dc6000610160515af1610a9757600080fd5b6101c06000608c818352015b6101a051610180511115610aba57610ccc56610c99565b6101405161016051610180516101a0516101c0516101e051610160516102005261018051610220526102205161020051600658016104be565b610280526101e0526101c0526101a052610180526101605261014052610280516101e0526102006080610300602463d1febfb9610280526101e0516102a05261029c610160515afa610b4457600080fd5b607f3d11610b5157600080fd5b6103008080808051610380525050602081019050808080516103a0525050602081019050808080516103c0525050602081019050808080516103e0525050505060005061038080518252806020015182602001528060400151826040015280606001518260600152505060006102805261024051610180511115610bff57610180516102405180821015610be457600080fd5b80820390509050604051811115610bfa57600080fd5b610280525b61020051610220516102805180820280806000811215610c1b57195b607f1c15610c2857600080fd5b90509050905080820380806000811215610c3e57195b607f1c15610c4b57600080fd5b905090509050600080821215610c615780610c63565b815b905090506000811215610c7557600080fd5b6101805166038d7ea4c680008110610c8c57600080fd5b600c60c052602060c02001555b610180805162015180818183011015610cb157600080fd5b808201905090508152505b8151600101808352811415610aa3575b50506101805160015561014051565b63b21ed5026000511415610cf75760065801610a25565b600050005b6387e05d3e6000511415610d5c5760043560a01c15610d1557600080fd5b60243560a01c15610d2557600080fd5b600d543314610d3357600080fd5b6001600460043560e05260c052604060c02055602435600560043560e05260c052604060c02055005b60001561166d575b6101a05261014052610160526101805260006101c05260006101e05260006102005260006102205260006102405260006102605260006102805260006102a05260006102c05260006102e05260006103005260206103c0602463010ae75761034052610140516103605261035c610160515afa610de057600080fd5b601f3d11610ded57600080fd5b6000506103c0516103205260005461034052610320511515610e4557610140610360525b600061036051111515610e2357610e3f565b602061036051036101e001516020610360510361036052610e11565b6101a051565b60026101405160e05260c052604060c0205461036052610360511515610f3f576101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e051610300516103205161034051610360516101605161038052610140516103a052610340516103c052610320516103e0526103e0516103c0516103a0516103805160065801610679565b61044052610360526103405261032052610300526102e0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a052610180526101605261014052610440516101c052610f56565b60036101405160e05260c052604060c020546101c0525b6101c0511515610f675760016101c0525b61038060806104a060446328d09d476104005261014051610420526101c0516104405261041c610160515afa610f9c57600080fd5b607f3d11610fa957600080fd5b6104a080808080516105205250506020810190508080805161054052505060208101905080808051610560525050602081019050808080516105805250505050600050610520805182528060200151826020015280604001518260400152806060015182606001525050610360511515611080576103c0516201518081818301101561103457600080fd5b8082019050905060018082101561104a57600080fd5b80820390509050620151808082049050905062015180808202821582848304141761107457600080fd5b80905090509050610360525b61018051610360511015156110cb57610140610400525b6000610400511115156110a9576110c5565b602061040051036101e001516020610400510361040052611097565b6101a051565b610340516103605110156110e25761034051610360525b6080366104003761048060006096818352015b610180516103605110151561110957611425565b6103c0516103605110151561112757610320516101c051111561112a565b60005b15611245576101c08051600181818301101561114557600080fd5b80820190509050815250610400610380805182528060200151826020015280604001518260400152806060015182606001525050610320516101c05111156111935760803661038037611240565b610380608061054060446328d09d476104a052610140516104c0526101c0516104e0526104bc610160515afa6111c857600080fd5b607f3d116111d557600080fd5b61054080808080516105c0525050602081019050808080516105e0525050602081019050808080516106005250506020810190508080805161062052505050506000506105c08051825280602001518260200152806040015182604001528060600151826060015250505b611414565b61036051610440518082101561125a57600080fd5b8082039050905060405181111561127057600080fd5b6104a052610400516104a051610420518082028080600081121561129057195b607f1c1561129d57600080fd5b905090509050808203808060008112156112b357195b607f1c156112c057600080fd5b9050905090506000808212156112d657806112d8565b815b9050905060008112156112ea57600080fd5b6104c0526104c051151561130657610320516101c05111611309565b60005b1561131357611425565b60006104c05111156113f1576104e06000600a818352015b6101e06104e051600a811061133f57600080fd5b6020020180516104c0516104e051600a811061135a57600080fd5b60076103605160e05260c052604060c02060c052602060c0200154808202821582848304141761138957600080fd5b809050905090506103605166038d7ea4c6800081106113a757600080fd5b600c60c052602060c020015480806113be57600080fd5b8204905090508181830110156113d357600080fd5b808201905090508152505b815160010180835281141561132b575b50505b61036080516201518081818301101561140957600080fd5b808201905090508152505b5b81516001018083528114156110f5575b5050610320516101c05160018082101561143e57600080fd5b80820390509050808211156114535780611455565b815b905090506101c0526101c05160036101405160e05260c052604060c020556103605160026101405160e05260c052604060c020556101405161048052600160046101405160e05260c052604060c0205414156114c25760056101405160e05260c052604060c02054610480525b6104a06000600a818352015b60006101e06104a051600a81106114e457600080fd5b602002015118156115c5576104a051600a811061150057600080fd5b600960c052602060c02001546104c0526020610580604463a9059cbb6104e05261048051610500526101e06104a051600a811061153c57600080fd5b6020020151610520526104fc60006104c0515af161155957600080fd5b601f3d1161156657600080fd5b6000506105805161157657600080fd5b6104a051600a811061158757600080fd5b600b60c052602060c0200180546101e06104a051600a81106115a857600080fd5b6020020151808210156115ba57600080fd5b808203905090508155505b6101e06104a051600a81106115d957600080fd5b60200201516104c0526101c0516104e0526103205161050052610140517f9cdcf2f7714cca3508c7f0110b04a90a80a3a8dd0e35de99689db74d28c5383e60606104c0a25b81516001018083528114156114ce575b50506101406104a0525b60006104a05111151561164a57611666565b60206104a051036101e0015160206104a051036104a052611638565b6101a05156005b634e71d92d60005114156116855733610140526116bb565b631e83409a60005114156116b35760043560a01c156116a357600080fd5b60206004610140376000506116bb565b60001561182a575b62ffffff54156116ca57600080fd5b600162ffffff55601154156116de57600080fd5b600154421015156116fe576101405160065801610a25565b610140526000505b600660c052602060c0205461016052600f541561172057610160514211611723565b60005b1561177d576101806000600a818352015b610140516101605161018051610180516101a0526101a0516006580161003a565b6101805261016052610140526000505b8151600101808352811415611734575b505042610160525b6101605162015180808204905090506201518080820282158284830414176117a457600080fd5b8090509050905061016052600062ffffff55610140610140516101605161014051610180526008546101a052610160516101c0526101c0516101a0516101805160065801610d64565b610220526102405261026052610280526102a0526102c0526102e0526103005261032052610340526101605261014052610220f3600062ffffff55005b637b935a236000511415611a2d5762ffffff541561184757600080fd5b600162ffffff556000610120525b610120516004013560a01c1561186a57600080fd5b602061012051016101205261028061012051101561188757611855565b6011541561189457600080fd5b600154421015156118ac5760065801610a25565b6000505b600660c052602060c0205461014052600f54156118ce576101405142116118d1565b60005b15611923576101606000600a818352015b61014051610160516101605161018052610180516006580161003a565b61016052610140526000505b81516001018083528114156118e2575b505042610140525b61014051620151808082049050905062015180808202821582848304141761194a57600080fd5b8090509050905061014052600854610160526101a060006014818352015b60206101a05102600401356101805261018051151561198657611a10565b6101405161016051610180516101a051610180516101c052610160516101e0526101405161020052610200516101e0516101c05160065801610d64565b61026052610280526102a0526102c0526102e05261030052610320526103405261036052610380526101a052610180526101605261014052610260505b8151600101808352811415611968575b50506001600052600062ffffff5560206000f350600062ffffff55005b6389afcb446000511415611b635760043560a01c15611a4b57600080fd5b60115415611a5857600080fd5b60206101e060246370a0823161016052336101805261017c6004355afa611a7e57600080fd5b601f3d11611a8b57600080fd5b6000506101e051610140526000610140511815611b5657602061022060646323b872dd610160523361018052306101a052610140516101c05261017c60006004355af1611ad757600080fd5b601f3d11611ae457600080fd5b60005061022050600f5415611b0557600660c052602060c020544211611b08565b60005b15611b55576101606000600a818352015b61014051610160516101605161018052610180516006580161003a565b61016052610140526000505b8151600101808352811415611b19575b50505b5b600160005260206000f350005b63b1d3db756000511415611bc55760043560a01c15611b8157600080fd5b600d543314611b8f57600080fd5b600435600e55600435610140527f59a407284ae6e2986675fa1400d6498af928ed01f4fd2dd6be4a2a8b4fc35b346020610140a1005b63c0e991a66000511415611c2f57600d543314611be157600080fd5b6000600e5418611bf057600080fd5b600e546101405261014051600d5561014051610160527f756f845176805c8ebf249854e909627308157f63c96e470e44a9e8549ba6fb1e6020610160a1005b632121bfc36000511415611c8b57600d543314611c4b57600080fd5b600f54156101405261014051600f5561014051610160527fdbe6ac1081ebd8e648718341126659456f4009fcadfe1c23f66f5e61522610b26020610160a1005b63e36988536000511415611d7557600d543314611ca757600080fd5b60016011556101406000600a818352015b61014051600a8110611cc957600080fd5b600960c052602060c02001546101605260206102c0604463a9059cbb6102205260105461024052602061020060246370a0823161018052306101a05261019c610160515afa611d1757600080fd5b601f3d11611d2457600080fd5b600050610200516102605261023c6000610160515af1611d4357600080fd5b601f3d11611d5057600080fd5b6000506102c051611d6057600080fd5b5b8151600101808352811415611cb8575b5050005b63db2f5f796000511415611f2d5760043560a01c15611d9357600080fd5b600d543314611da157600080fd5b60206101e060246370a0823161016052306101805261017c6004355afa611dc757600080fd5b601f3d11611dd457600080fd5b6000506101e05161014052600060046101c0527fa9059cbb000000000000000000000000000000000000000000000000000000006101e0526101c060048060208461022001018260208501600060045af150508051820191505060105460208261022001015260208101905061014051602082610220010152602081019050806102205261022090508051602001806102c08284600060045af1611e7757600080fd5b505060206103806102c0516102e060006004355af1611e9557600080fd5b60203d80821115611ea65780611ea8565b815b90509050610360526103608051602001806101608284600060045af1611ecd57600080fd5b50506000610160511815611f2057610160806020015160008251806020901315611ef657600080fd5b8091901215611f0457600080fd5b806020036101000a82049050905090501515611f1f57600080fd5b5b600160005260206000f350005b63853f21c86000511415611f6c5760043560a01c15611f4b57600080fd5b600d543314611f5957600080fd5b600435601055600160005260206000f350005b632212dbc36000511415611f86574260005260206000f350005b63834ee4176000511415611fa25760005460005260206000f350005b63127dcbd36000511415611fbe5760015460005260206000f350005b632a2a314b6000511415611ff85760043560a01c15611fdc57600080fd5b600260043560e05260c052604060c0205460005260206000f350005b63d5d46e8860005114156120325760043560a01c1561201657600080fd5b600360043560e05260c052604060c0205460005260206000f350005b632d0372c6600051141561206c5760043560a01c1561205057600080fd5b600460043560e05260c052604060c0205460005260206000f350005b63457ceeda60005114156120a65760043560a01c1561208a57600080fd5b600560043560e05260c052604060c0205460005260206000f350005b63c628844360005114156120db57600435600a81106120c457600080fd5b600660c052602060c020015460005260206000f350005b633fd83e9e600051141561211e57602435600a81106120f957600080fd5b600760043560e05260c052604060c02060c052602060c020015460005260206000f350005b63dfe05031600051141561213a5760085460005260206000f350005b634f64b2be600051141561216f57600435600a811061215857600080fd5b600960c052602060c020015460005260206000f350005b632f0c222e600051141561218b57600a5460005260206000f350005b639a03be5160005114156121c057600435600a81106121a957600080fd5b600b60c052602060c020015460005260206000f350005b63d4dafba860005114156121fb5760043566038d7ea4c6800081106121e457600080fd5b600c60c052602060c020015460005260206000f350005b63f851a440600051141561221757600d5460005260206000f350005b6317f7182a600051141561223357600e5460005260206000f350005b63aeba4737600051141561224f57600f5460005260206000f350005b632c3f531e600051141561226b5760105460005260206000f350005b639c868ac060005114156122875760115460005260206000f350005b5b60006000fd5b61018661241403610186600039610186612414036000f30000000000000000000000003ae658656d1c526144db371faef2fff7170654ee000000000000000000000000000000000000000000000000000000006239118000000000000000000000000010b620b2dbac4faa7d7ffd71da486f5d44cd86f900000000000000000000000021be370d5312f44cb42ce377bc9b8a0cef1a4c83000000000000000000000000841fad6eae12c286d1fd18d1d525dffa75c7effe000000000000000000000000c5713b6a0f26bf0fdc1c52b90cd184d950be515c000000000000000000000000468003b688943977e6130f4f68f23aad939a1040000000000000000000000000f24bcf4d1e507740041c9cfd2dddb29585adce1e000000000000000000000000a48d959ae2e88f1daa7d5f611e01908106de759800000000000000000000000010010078a54396f62c96df8532dc2b4847d47ed3000000000000000000000000a147268f35db4ae3932eabe42af16c36a8b89690000000000000000000000000de5ed76e7c05ec5e4572cfc88d1acea165109e44000000000000000000000000f4c5b06ff9cd8f685ddcc58202597e56f1c0faee000000000000000000000000f4c5b06ff9cd8f685ddcc58202597e56f1c0faee
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Validator ID :
0 FTM
Amount Staked
0
Amount Delegated
0
Staking Total
0
Staking Start Epoch
0
Staking Start Time
0
Proof of Importance
0
Origination Score
0
Validation Score
0
Active
0
Online
0
Downtime
0 s
Address | Amount | claimed Rewards | Created On Epoch | Created On |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.