false
false
100

Contract Address Details

0xBfB032e2a9564e50E970c6aEf4C1E664d1F98D36

Contract Name
VeArtProxy
Creator
0xa49812–941199 at 0x3aaa36–1ef05a
Balance
0 KAVA ( )
Tokens
Fetching tokens...
Transactions
Fetching transactions...
Transfers
Fetching transfers...
Gas Used
Fetching gas used...
Last Balance Update
11603026
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
Contract name:
VeArtProxy




Optimization enabled
true
Compiler version
v0.8.13+commit.abaa5c0e




Optimization runs
200
EVM Version
default




Verified at
2022-09-16T16:32:30.518960Z

Contract source code

// File: contracts/interfaces/IVeArtProxy.sol

pragma solidity 0.8.13;

interface IVeArtProxy {
    function _tokenURI(uint _tokenId, uint _balanceOf, uint _locked_end, uint _value) external pure returns (string memory output);
}

// File: contracts/libraries/Base64.sol

pragma solidity 0.8.13;

/// [MIT License]
/// @title Base64
/// @notice Provides a function for encoding some bytes in base64
/// @author Brecht Devos <brecht@loopring.org>
library Base64 {
    bytes internal constant TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

    /// @notice Encodes some bytes to the base64 representation
    function encode(bytes memory data) internal pure returns (string memory) {
        uint len = data.length;
        if (len == 0) return "";

        // multiply by 4/3 rounded up
        uint encodedLen = 4 * ((len + 2) / 3);

        // Add some extra buffer at the end
        bytes memory result = new bytes(encodedLen + 32);

        bytes memory table = TABLE;

        assembly {
            let tablePtr := add(table, 1)
            let resultPtr := add(result, 32)

            for {
                let i := 0
            } lt(i, len) {

            } {
                i := add(i, 3)
                let input := and(mload(add(data, i)), 0xffffff)

                let out := mload(add(tablePtr, and(shr(18, input), 0x3F)))
                out := shl(8, out)
                out := add(out, and(mload(add(tablePtr, and(shr(12, input), 0x3F))), 0xFF))
                out := shl(8, out)
                out := add(out, and(mload(add(tablePtr, and(shr(6, input), 0x3F))), 0xFF))
                out := shl(8, out)
                out := add(out, and(mload(add(tablePtr, and(input, 0x3F))), 0xFF))
                out := shl(224, out)

                mstore(resultPtr, out)

                resultPtr := add(resultPtr, 4)
            }

            switch mod(len, 3)
            case 1 {
                mstore(sub(resultPtr, 2), shl(240, 0x3d3d))
            }
            case 2 {
                mstore(sub(resultPtr, 1), shl(248, 0x3d))
            }

            mstore(result, encodedLen)
        }

        return string(result);
    }
}

// File: contracts/VeArtProxy.sol

pragma solidity 0.8.13;



contract VeArtProxy is IVeArtProxy {
    function toString(uint value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT license
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        if (value == 0) {
            return "0";
        }
        uint temp = value;
        uint digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    function _tokenURI(uint _tokenId, uint _balanceOf, uint _locked_end, uint _value) external pure returns (string memory output) {
        output = '<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base { fill: white; font-family: serif; font-size: 14px; }</style><rect width="100%" height="100%" fill="black" /><text x="10" y="20" class="base">';
        output = string(abi.encodePacked(output, "token ", toString(_tokenId), '</text><text x="10" y="40" class="base">'));
        output = string(abi.encodePacked(output, "balanceOf ", toString(_balanceOf), '</text><text x="10" y="60" class="base">'));
        output = string(abi.encodePacked(output, "locked_end ", toString(_locked_end), '</text><text x="10" y="80" class="base">'));
        output = string(abi.encodePacked(output, "value ", toString(_value), '</text></svg>'));

        string memory json = Base64.encode(bytes(string(abi.encodePacked('{"name": "lock #', toString(_tokenId), '", "description": "Velodrome locks, can be used to boost gauge yields, vote on token emission, and receive bribes", "image": "data:image/svg+xml;base64,', Base64.encode(bytes(output)), '"}'))));
        output = string(abi.encodePacked('data:application/json;base64,', json));
    }
}
        

Contract ABI

[{"type":"function","stateMutability":"pure","outputs":[{"type":"string","name":"output","internalType":"string"}],"name":"_tokenURI","inputs":[{"type":"uint256","name":"_tokenId","internalType":"uint256"},{"type":"uint256","name":"_balanceOf","internalType":"uint256"},{"type":"uint256","name":"_locked_end","internalType":"uint256"},{"type":"uint256","name":"_value","internalType":"uint256"}]}]
              

Contract Creation Code

0x608060405234801561001057600080fd5b50610a2b806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063dd9ec14914610030575b600080fd5b61004361003e366004610403565b610059565b6040516100509190610465565b60405180910390f35b606060405180610120016040528060fd81526020016108b960fd913990508061008186610190565b604051602001610092929190610498565b6040516020818303038152906040529050806100ad85610190565b6040516020016100be929190610514565b6040516020818303038152906040529050806100d984610190565b6040516020016100ea929190610594565b60405160208183030381529060405290508061010583610190565b604051602001610116929190610615565b6040516020818303038152906040529050600061016361013587610190565b61013e84610299565b60405160200161014f929190610670565b604051602081830303815290604052610299565b905080604051602001610176919061078c565b604051602081830303815290604052915050949350505050565b6060816000036101b75750506040805180820190915260018152600360fc1b602082015290565b8160005b81156101e157806101cb816107e7565b91506101da9050600a83610816565b91506101bb565b60008167ffffffffffffffff8111156101fc576101fc61082a565b6040519080825280601f01601f191660200182016040528015610226576020820181803683370190505b5090505b84156102915761023b600183610840565b9150610248600a86610857565b61025390603061086b565b60f81b81838151811061026857610268610883565b60200101906001600160f81b031916908160001a90535061028a600a86610816565b945061022a565b949350505050565b805160609060008190036102bd575050604080516020810190915260008152919050565b600060036102cc83600261086b565b6102d69190610816565b6102e1906004610899565b905060006102f082602061086b565b67ffffffffffffffff8111156103085761030861082a565b6040519080825280601f01601f191660200182016040528015610332576020820181803683370190505b50905060006040518060600160405280604081526020016109b6604091399050600181016020830160005b868110156103be576003818a01810151603f601282901c8116860151600c83901c8216870151600684901c831688015192909316870151600891821b60ff94851601821b92841692909201901b91160160e01b83526004909201910161035d565b5060038606600181146103d857600281146103e9576103f5565b613d3d60f01b6001198301526103f5565b603d60f81b6000198301525b505050918152949350505050565b6000806000806080858703121561041957600080fd5b5050823594602084013594506040840135936060013592509050565b60005b83811015610450578181015183820152602001610438565b8381111561045f576000848401525b50505050565b6020815260008251806020840152610484816040850160208701610435565b601f01601f19169190910160400192915050565b600083516104aa818460208801610435565b6503a37b5b2b7160d51b90830190815283516104cd816006840160208801610435565b7f3c2f746578743e3c7465787420783d2231302220793d2234302220636c61737360069290910191820152671e913130b9b2911f60c11b6026820152602e01949350505050565b60008351610526818460208801610435565b6903130b630b731b2a7b3160b51b908301908152835161054d81600a840160208801610435565b7f3c2f746578743e3c7465787420783d2231302220793d2236302220636c617373600a9290910191820152671e913130b9b2911f60c11b602a820152603201949350505050565b600083516105a6818460208801610435565b6a03637b1b5b2b22fb2b732160ad1b90830190815283516105ce81600b840160208801610435565b7f3c2f746578743e3c7465787420783d2231302220793d2238302220636c617373600b9290910191820152671e913130b9b2911f60c11b602b820152603301949350505050565b60008351610627818460208801610435565b6503b30b63ab2960d51b908301908152835161064a816006840160208801610435565b6c1e17ba32bc3a1f1e17b9bb339f60991b60069290910191820152601301949350505050565b6f7b226e616d65223a20226c6f636b202360801b8152825160009061069c816010850160208801610435565b7f222c20226465736372697074696f6e223a202256656c6f64726f6d65206c6f636010918401918201527f6b732c2063616e206265207573656420746f20626f6f7374206761756765207960308201527f69656c64732c20766f7465206f6e20746f6b656e20656d697373696f6e2c206160508201527f6e64207265636569766520627269626573222c2022696d616765223a2022646160708201527f74613a696d6167652f7376672b786d6c3b6261736536342c0000000000000000609082015283516107718160a8840160208801610435565b61227d60f01b60a8929091019182015260aa01949350505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000008152600082516107c481601d850160208701610435565b91909101601d0192915050565b634e487b7160e01b600052601160045260246000fd5b6000600182016107f9576107f96107d1565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261082557610825610800565b500490565b634e487b7160e01b600052604160045260246000fd5b600082821015610852576108526107d1565b500390565b60008261086657610866610800565b500690565b6000821982111561087e5761087e6107d1565b500190565b634e487b7160e01b600052603260045260246000fd5b60008160001904831182151516156108b3576108b36107d1565b50029056fe3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f73766722207072657365727665417370656374526174696f3d22784d696e594d696e206d656574222076696577426f783d223020302033353020333530223e3c7374796c653e2e62617365207b2066696c6c3a2077686974653b20666f6e742d66616d696c793a2073657269663b20666f6e742d73697a653a20313470783b207d3c2f7374796c653e3c726563742077696474683d223130302522206865696768743d2231303025222066696c6c3d22626c61636b22202f3e3c7465787420783d2231302220793d2232302220636c6173733d2262617365223e4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa264697066735822122083ea88a875836a8b59744764aa99b06c38e4a150663e16513c8d86ab7ea24ab664736f6c634300080d0033

Deployed ByteCode

0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063dd9ec14914610030575b600080fd5b61004361003e366004610403565b610059565b6040516100509190610465565b60405180910390f35b606060405180610120016040528060fd81526020016108b960fd913990508061008186610190565b604051602001610092929190610498565b6040516020818303038152906040529050806100ad85610190565b6040516020016100be929190610514565b6040516020818303038152906040529050806100d984610190565b6040516020016100ea929190610594565b60405160208183030381529060405290508061010583610190565b604051602001610116929190610615565b6040516020818303038152906040529050600061016361013587610190565b61013e84610299565b60405160200161014f929190610670565b604051602081830303815290604052610299565b905080604051602001610176919061078c565b604051602081830303815290604052915050949350505050565b6060816000036101b75750506040805180820190915260018152600360fc1b602082015290565b8160005b81156101e157806101cb816107e7565b91506101da9050600a83610816565b91506101bb565b60008167ffffffffffffffff8111156101fc576101fc61082a565b6040519080825280601f01601f191660200182016040528015610226576020820181803683370190505b5090505b84156102915761023b600183610840565b9150610248600a86610857565b61025390603061086b565b60f81b81838151811061026857610268610883565b60200101906001600160f81b031916908160001a90535061028a600a86610816565b945061022a565b949350505050565b805160609060008190036102bd575050604080516020810190915260008152919050565b600060036102cc83600261086b565b6102d69190610816565b6102e1906004610899565b905060006102f082602061086b565b67ffffffffffffffff8111156103085761030861082a565b6040519080825280601f01601f191660200182016040528015610332576020820181803683370190505b50905060006040518060600160405280604081526020016109b6604091399050600181016020830160005b868110156103be576003818a01810151603f601282901c8116860151600c83901c8216870151600684901c831688015192909316870151600891821b60ff94851601821b92841692909201901b91160160e01b83526004909201910161035d565b5060038606600181146103d857600281146103e9576103f5565b613d3d60f01b6001198301526103f5565b603d60f81b6000198301525b505050918152949350505050565b6000806000806080858703121561041957600080fd5b5050823594602084013594506040840135936060013592509050565b60005b83811015610450578181015183820152602001610438565b8381111561045f576000848401525b50505050565b6020815260008251806020840152610484816040850160208701610435565b601f01601f19169190910160400192915050565b600083516104aa818460208801610435565b6503a37b5b2b7160d51b90830190815283516104cd816006840160208801610435565b7f3c2f746578743e3c7465787420783d2231302220793d2234302220636c61737360069290910191820152671e913130b9b2911f60c11b6026820152602e01949350505050565b60008351610526818460208801610435565b6903130b630b731b2a7b3160b51b908301908152835161054d81600a840160208801610435565b7f3c2f746578743e3c7465787420783d2231302220793d2236302220636c617373600a9290910191820152671e913130b9b2911f60c11b602a820152603201949350505050565b600083516105a6818460208801610435565b6a03637b1b5b2b22fb2b732160ad1b90830190815283516105ce81600b840160208801610435565b7f3c2f746578743e3c7465787420783d2231302220793d2238302220636c617373600b9290910191820152671e913130b9b2911f60c11b602b820152603301949350505050565b60008351610627818460208801610435565b6503b30b63ab2960d51b908301908152835161064a816006840160208801610435565b6c1e17ba32bc3a1f1e17b9bb339f60991b60069290910191820152601301949350505050565b6f7b226e616d65223a20226c6f636b202360801b8152825160009061069c816010850160208801610435565b7f222c20226465736372697074696f6e223a202256656c6f64726f6d65206c6f636010918401918201527f6b732c2063616e206265207573656420746f20626f6f7374206761756765207960308201527f69656c64732c20766f7465206f6e20746f6b656e20656d697373696f6e2c206160508201527f6e64207265636569766520627269626573222c2022696d616765223a2022646160708201527f74613a696d6167652f7376672b786d6c3b6261736536342c0000000000000000609082015283516107718160a8840160208801610435565b61227d60f01b60a8929091019182015260aa01949350505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000008152600082516107c481601d850160208701610435565b91909101601d0192915050565b634e487b7160e01b600052601160045260246000fd5b6000600182016107f9576107f96107d1565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60008261082557610825610800565b500490565b634e487b7160e01b600052604160045260246000fd5b600082821015610852576108526107d1565b500390565b60008261086657610866610800565b500690565b6000821982111561087e5761087e6107d1565b500190565b634e487b7160e01b600052603260045260246000fd5b60008160001904831182151516156108b3576108b36107d1565b50029056fe3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f73766722207072657365727665417370656374526174696f3d22784d696e594d696e206d656574222076696577426f783d223020302033353020333530223e3c7374796c653e2e62617365207b2066696c6c3a2077686974653b20666f6e742d66616d696c793a2073657269663b20666f6e742d73697a653a20313470783b207d3c2f7374796c653e3c726563742077696474683d223130302522206865696768743d2231303025222066696c6c3d22626c61636b22202f3e3c7465787420783d2231302220793d2232302220636c6173733d2262617365223e4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa264697066735822122083ea88a875836a8b59744764aa99b06c38e4a150663e16513c8d86ab7ea24ab664736f6c634300080d0033