ETH Price: $2,691.71 (+1.97%)

Contract

0xd78D4beAbFD3054390D10aeb4258dC2D867f5e17
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Token Delega...52625952018-03-16 0:37:382524 days ago1521160658IN
0xd78D4beA...D867f5e17
0 ETH0.000822895
Set Token Delega...52625912018-03-16 0:36:032524 days ago1521160563IN
0xd78D4beA...D867f5e17
0 ETH0.000822895
Set Token Delega...52625882018-03-16 0:35:382524 days ago1521160538IN
0xd78D4beA...D867f5e17
0 ETH0.000822895
Set Token Delega...52612522018-03-15 19:22:272524 days ago1521141747IN
0xd78D4beA...D867f5e17
0 ETH0.000822895
Set Token Delega...51978282018-03-05 0:25:432535 days ago1520209543IN
0xd78D4beA...D867f5e17
0 ETH0.000658314
Set Token Delega...51978282018-03-05 0:25:432535 days ago1520209543IN
0xd78D4beA...D867f5e17
0 ETH0.000658054
Set Token Delega...51978202018-03-05 0:22:402535 days ago1520209360IN
0xd78D4beA...D867f5e17
0 ETH0.000658314
Set Token Delega...51978162018-03-05 0:22:112535 days ago1520209331IN
0xd78D4beA...D867f5e17
0 ETH0.000658054
Set Token Delega...51978112018-03-05 0:20:222535 days ago1520209222IN
0xd78D4beA...D867f5e17
0 ETH0.000658314
Set Token Delega...51978052018-03-05 0:19:042535 days ago1520209144IN
0xd78D4beA...D867f5e17
0 ETH0.000658054
Set Token Delega...51978042018-03-05 0:18:042535 days ago1520209084IN
0xd78D4beA...D867f5e17
0 ETH0.000658054
Set Token Delega...51977992018-03-05 0:16:452535 days ago1520209005IN
0xd78D4beA...D867f5e17
0 ETH0.000658054
Set Token Delega...51977952018-03-05 0:16:032535 days ago1520208963IN
0xd78D4beA...D867f5e17
0 ETH0.000658314
Set Token Delega...51977912018-03-05 0:14:332535 days ago1520208873IN
0xd78D4beA...D867f5e17
0 ETH0.000658314
Set Token Delega...51977872018-03-05 0:13:472535 days ago1520208827IN
0xd78D4beA...D867f5e17
0 ETH0.000658314
Set Token Delega...51977842018-03-05 0:13:042535 days ago1520208784IN
0xd78D4beA...D867f5e17
0 ETH0.000658314
Set Token Delega...51977812018-03-05 0:11:422535 days ago1520208702IN
0xd78D4beA...D867f5e17
0 ETH0.000658314
Set Token Delega...51977782018-03-05 0:10:202535 days ago1520208620IN
0xd78D4beA...D867f5e17
0 ETH0.000658314
Set Token Delega...51977682018-03-05 0:08:492535 days ago1520208529IN
0xd78D4beA...D867f5e17
0 ETH0.000658314
Set Token Delega...51977632018-03-05 0:07:502535 days ago1520208470IN
0xd78D4beA...D867f5e17
0 ETH0.000658054
Set Token Delega...51977592018-03-05 0:07:082535 days ago1520208428IN
0xd78D4beA...D867f5e17
0 ETH0.000658054
Set Token Delega...51977502018-03-05 0:05:212535 days ago1520208321IN
0xd78D4beA...D867f5e17
0 ETH0.000658054
Set Token Delega...51977502018-03-05 0:05:212535 days ago1520208321IN
0xd78D4beA...D867f5e17
0 ETH0.000658314
Set Token Delega...51977402018-03-05 0:03:122535 days ago1520208192IN
0xd78D4beA...D867f5e17
0 ETH0.000658314
Set Token Delega...51977312018-03-04 23:59:002535 days ago1520207940IN
0xd78D4beA...D867f5e17
0 ETH0.000658314
View all transactions

Advanced mode:
Parent Transaction Hash Block
From
To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SVDelegation

Compiler Version
v0.4.20+commit.3155dd80

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-02-28
*/

pragma solidity ^0.4.19;

// DELEGATION SC

// (c) SecureVote 2018

// Released under MIT licence

contract SVDelegation {

    address public owner;

    struct Delegation {
        uint256 thisDelegationId;
        address dlgt;
        uint256 setAtBlock;
        uint256 prevDelegation;
    }

    mapping (address => mapping (address => Delegation)) tokenDlgts;
    mapping (address => Delegation) globalDlgts;

    mapping (uint256 => Delegation) public historicalDelegations;
    uint256 public totalDelegations = 0;

    event SetGlobalDelegation(address voter, address delegate);
    event SetTokenDelegation(address voter, address tokenContract, address delegate);

    function SVDelegation() public {
        owner = msg.sender;

        // commit the genesis historical delegation to history (like genesis block)
        createDelegation(address(0), 0);
    }

    function createDelegation(address dlgtAddress, uint256 prevDelegationId) internal returns(Delegation) {
        uint256 myDelegationId = totalDelegations;
        historicalDelegations[myDelegationId] = Delegation(myDelegationId, dlgtAddress, block.number, prevDelegationId);
        totalDelegations += 1;

        return historicalDelegations[myDelegationId];
    }

    // get previous delegation, create new delegation via function and then commit to globalDlgts
    function setGlobalDelegation(address dlgtAddress) public {
        uint256 prevDelegationId = globalDlgts[msg.sender].thisDelegationId;
        globalDlgts[msg.sender] = createDelegation(dlgtAddress, prevDelegationId);
        SetGlobalDelegation(msg.sender, dlgtAddress);
    }

    // get previous delegation, create new delegation via function and then commit to tokenDlgts
    function setTokenDelegation(address tokenContract, address dlgtAddress) public {
        uint256 prevDelegationId = tokenDlgts[tokenContract][msg.sender].thisDelegationId;
        tokenDlgts[tokenContract][msg.sender] = createDelegation(dlgtAddress, prevDelegationId);
        SetTokenDelegation(msg.sender, tokenContract, dlgtAddress);
    }

    function resolveDelegation(address voter, address tokenContract) public constant returns(uint256, address, uint256, uint256) {
        Delegation memory _tokenDlgt = tokenDlgts[tokenContract][voter];

        // probs simplest test to check if we have a valid delegation
        if (_tokenDlgt.setAtBlock > 0) {
            return _dlgtRet(_tokenDlgt);
        } else {
            return _dlgtRet(globalDlgts[voter]);
        }
    }

    function _rawGetGlobalDelegation(address _voter) public constant returns(uint256, address, uint256, uint256) {
        return _dlgtRet(globalDlgts[_voter]);
    }

    function _rawGetTokenDelegation(address _voter, address _tokenContract) public constant returns(uint256, address, uint256, uint256) {
        return _dlgtRet(tokenDlgts[_tokenContract][_voter]);
    }

    function _dlgtRet(Delegation d) internal pure returns(uint256, address, uint256, uint256) {
        return (d.thisDelegationId, d.dlgt, d.setAtBlock, d.prevDelegation);
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"totalDelegations","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"historicalDelegations","outputs":[{"name":"thisDelegationId","type":"uint256"},{"name":"dlgt","type":"address"},{"name":"setAtBlock","type":"uint256"},{"name":"prevDelegation","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_voter","type":"address"},{"name":"_tokenContract","type":"address"}],"name":"_rawGetTokenDelegation","outputs":[{"name":"","type":"uint256"},{"name":"","type":"address"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"voter","type":"address"},{"name":"tokenContract","type":"address"}],"name":"resolveDelegation","outputs":[{"name":"","type":"uint256"},{"name":"","type":"address"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"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":"dlgtAddress","type":"address"}],"name":"setGlobalDelegation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"tokenContract","type":"address"},{"name":"dlgtAddress","type":"address"}],"name":"setTokenDelegation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_voter","type":"address"}],"name":"_rawGetGlobalDelegation","outputs":[{"name":"","type":"uint256"},{"name":"","type":"address"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"voter","type":"address"},{"indexed":false,"name":"delegate","type":"address"}],"name":"SetGlobalDelegation","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"voter","type":"address"},{"indexed":false,"name":"tokenContract","type":"address"},{"indexed":false,"name":"delegate","type":"address"}],"name":"SetTokenDelegation","type":"event"}]

60606040526000600455341561001457600080fd5b60008054600160a060020a03191633600160a060020a0316178155610046908064010000000061004c810261060a1704565b5061015e565b61005461012c565b60045460806040519081016040908152828252600160a060020a0386166020808401919091524382840152606083018690526000848152600390915220815181556020820151600182018054600160a060020a031916600160a060020a039290921691909117905560408201518160020155606082015160039182015560048054600101905560008381526020919091526040908190209150608090519081016040908152825482526001830154600160a060020a031660208301526002830154908201526003909101546060820152949350505050565b608060405190810160405280600081526020016000600160a060020a0316815260200160008152602001600081525090565b6107558061016d6000396000f30060606040526004361061008d5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305b9cb3c81146100925780631f0b2f32146100b75780635fc31aeb1461010157806361efc7db146101265780638da5cb5b1461014b578063b1194bc41461017a578063df6e7a5f1461019b578063efc63bd3146101c0575b600080fd5b341561009d57600080fd5b6100a56101df565b60405190815260200160405180910390f35b34156100c257600080fd5b6100cd6004356101e5565b604051938452600160a060020a03909216602084015260408084019190915260608301919091526080909101905180910390f35b341561010c57600080fd5b6100cd600160a060020a0360043581169060243516610217565b341561013157600080fd5b6100cd600160a060020a0360043581169060243516610296565b341561015657600080fd5b61015e61038b565b604051600160a060020a03909116815260200160405180910390f35b341561018557600080fd5b610199600160a060020a036004351661039a565b005b34156101a657600080fd5b610199600160a060020a036004358116906024351661046d565b34156101cb57600080fd5b6100cd600160a060020a036004351661056b565b60045481565b600360208190526000918252604090912080546001820154600283015492909301549092600160a060020a0316919084565b600160a060020a0380821660009081526001602090815260408083209386168352929052818120909182918291829161028691608090519081016040908152825482526001830154600160a060020a0316602083015260028301549082015260039091015460608201526105e5565b9299919850965090945092505050565b6000806000806102a46106f7565b600160a060020a038087166000908152600160209081526040808320938b16835292905281902090608090519081016040908152825482526001830154600160a060020a031660208301526002830154908201908152600390920154606082015291506000905111156103275761031a816105e5565b9450945094509450610381565b600160a060020a0387166000908152600260205260409081902061031a91608090519081016040908152825482526001830154600160a060020a0316602083015260028301549082015260039091015460608201526105e5565b5092959194509250565b600054600160a060020a031681565b600160a060020a0333166000908152600260205260409020546103bd828261060a565b600160a060020a033316600090815260026020526040902081518155602082015160018201805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055604082015181600201556060820151600390910155507f80e8ffc3c5dd5acf237f5c6e5855a312b8778e3df8ac7346f51155bcfeacf7cd3383604051600160a060020a039283168152911660208201526040908101905180910390a15050565b600160a060020a038083166000908152600160209081526040808320339094168352929052205461049e828261060a565b600160a060020a0380851660009081526001602090815260408083203390941683529290522081518155602082015160018201805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055604082015181600201556060820151600390910155507f74d96c2392d2b95d269942d650f623d0c7fb1f54a58e773709f4284f7b449cd7338484604051600160a060020a03938416815291831660208301529091166040808301919091526060909101905180910390a1505050565b6000806000806105d66002600087600160a060020a0316600160a060020a0316815260200190815260200160002060806040519081016040908152825482526001830154600160a060020a0316602083015260028301549082015260039091015460608201526105e5565b93509350935093509193509193565b6000808080845185602001518660400151876060015193509350935093509193509193565b6106126106f7565b60045460806040519081016040908152828252600160a060020a038616602080840191909152438284015260608301869052600084815260039091522081518155602082015160018201805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039290921691909117905560408201518160020155606082015160039182015560048054600101905560008381526020919091526040908190209150608090519081016040908152825482526001830154600160a060020a031660208301526002830154908201526003909101546060820152949350505050565b608060405190810160405280600081526020016000600160a060020a03168152602001600081526020016000815250905600a165627a7a7230582042931361f348110e80191acdbca2ca81a77aca990fbacc38e7df08b44841e2f10029

Deployed Bytecode

0x60606040526004361061008d5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305b9cb3c81146100925780631f0b2f32146100b75780635fc31aeb1461010157806361efc7db146101265780638da5cb5b1461014b578063b1194bc41461017a578063df6e7a5f1461019b578063efc63bd3146101c0575b600080fd5b341561009d57600080fd5b6100a56101df565b60405190815260200160405180910390f35b34156100c257600080fd5b6100cd6004356101e5565b604051938452600160a060020a03909216602084015260408084019190915260608301919091526080909101905180910390f35b341561010c57600080fd5b6100cd600160a060020a0360043581169060243516610217565b341561013157600080fd5b6100cd600160a060020a0360043581169060243516610296565b341561015657600080fd5b61015e61038b565b604051600160a060020a03909116815260200160405180910390f35b341561018557600080fd5b610199600160a060020a036004351661039a565b005b34156101a657600080fd5b610199600160a060020a036004358116906024351661046d565b34156101cb57600080fd5b6100cd600160a060020a036004351661056b565b60045481565b600360208190526000918252604090912080546001820154600283015492909301549092600160a060020a0316919084565b600160a060020a0380821660009081526001602090815260408083209386168352929052818120909182918291829161028691608090519081016040908152825482526001830154600160a060020a0316602083015260028301549082015260039091015460608201526105e5565b9299919850965090945092505050565b6000806000806102a46106f7565b600160a060020a038087166000908152600160209081526040808320938b16835292905281902090608090519081016040908152825482526001830154600160a060020a031660208301526002830154908201908152600390920154606082015291506000905111156103275761031a816105e5565b9450945094509450610381565b600160a060020a0387166000908152600260205260409081902061031a91608090519081016040908152825482526001830154600160a060020a0316602083015260028301549082015260039091015460608201526105e5565b5092959194509250565b600054600160a060020a031681565b600160a060020a0333166000908152600260205260409020546103bd828261060a565b600160a060020a033316600090815260026020526040902081518155602082015160018201805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055604082015181600201556060820151600390910155507f80e8ffc3c5dd5acf237f5c6e5855a312b8778e3df8ac7346f51155bcfeacf7cd3383604051600160a060020a039283168152911660208201526040908101905180910390a15050565b600160a060020a038083166000908152600160209081526040808320339094168352929052205461049e828261060a565b600160a060020a0380851660009081526001602090815260408083203390941683529290522081518155602082015160018201805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055604082015181600201556060820151600390910155507f74d96c2392d2b95d269942d650f623d0c7fb1f54a58e773709f4284f7b449cd7338484604051600160a060020a03938416815291831660208301529091166040808301919091526060909101905180910390a1505050565b6000806000806105d66002600087600160a060020a0316600160a060020a0316815260200190815260200160002060806040519081016040908152825482526001830154600160a060020a0316602083015260028301549082015260039091015460608201526105e5565b93509350935093509193509193565b6000808080845185602001518660400151876060015193509350935093509193509193565b6106126106f7565b60045460806040519081016040908152828252600160a060020a038616602080840191909152438284015260608301869052600084815260039091522081518155602082015160018201805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039290921691909117905560408201518160020155606082015160039182015560048054600101905560008381526020919091526040908190209150608090519081016040908152825482526001830154600160a060020a031660208301526002830154908201526003909101546060820152949350505050565b608060405190810160405280600081526020016000600160a060020a03168152602001600081526020016000815250905600a165627a7a7230582042931361f348110e80191acdbca2ca81a77aca990fbacc38e7df08b44841e2f10029

Swarm Source

bzzr://42931361f348110e80191acdbca2ca81a77aca990fbacc38e7df08b44841e2f1

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

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.