0 txs
8k calls
constructor
constructor()
functions
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
nativeCoinPriceFeed
viewfunction nativeCoinPriceFeed() view returns (address)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
paymentTokensBases
viewfunction paymentTokensBases(address) view returns (uint256)
totalCollectedUSD
viewfunction totalCollectedUSD() view returns (uint128)
treasury
viewfunction treasury() view returns (address)
xyzPrice
viewfunction xyzPrice() view returns (uint128)
xyzPriceInNativeCoin
viewfunction xyzPriceInNativeCoin() view returns (uint256)
creditExternalPurchase
nonpayablefunction creditExternalPurchase(address recipient, uint256 purchasedXYZ, uint128 paidUSD, bytes[] paymentDetails)
initialize
nonpayablefunction initialize(address nativeCoinPriceFeed_, address[] paymentTokens_, uint128 xyzPrice_, address treasury_, address owner_)
pause
nonpayablefunction pause()
purchaseWithNativeCoin
payablefunction purchaseWithNativeCoin(address recipient) payable
purchaseWithToken
nonpayablefunction purchaseWithToken(address recipient, address paymentToken, uint256 paymentAmount)
renounceOwnership
nonpayablefunction renounceOwnership()
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
updateTokenStatus
nonpayablefunction updateTokenStatus(address token, bool isPaymentToken)
updateTreasuryAddress
nonpayablefunction updateTreasuryAddress(address newTreasury)
updateXYZPrice
nonpayablefunction updateXYZPrice(uint128 newPrice)
events
ExternallyPurchased
event ExternallyPurchased(address indexed recipient, uint256 purchasedXYZ, uint128 paidUSD, bytes[] paymentDetails)
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
Purchased
event Purchased(address indexed purchaseer, address indexed recipient, address indexed paymentToken, uint256 paymentAmount, uint256 purchasedXYZ, uint256 paidUSD)
TokenStatusUpdated
event TokenStatusUpdated(address token, bool isPaymentToken)
TreasuryAddressUpdated
event TreasuryAddressUpdated(address newTreasury)
Unpaused
event Unpaused(address account)
XYZPriceUpdated
event XYZPriceUpdated(uint256 newPrice)
errors
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
InsufficientPurchase
error InsufficientPurchase()
InvalidInitialization
error InvalidInitialization()
InvalidPaymentToken
error InvalidPaymentToken()
InvalidPrice
error InvalidPrice()
NoChange
error NoChange()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ZeroDecimalsPaymentToken
error ZeroDecimalsPaymentToken()
creation bytecode
0x608060405234801561001057600080fd5b5061001961001e565b6100d0565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161561006e5760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100cd5780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b611e4a806100df6000396000f3fe60806040526004361061015f5760003560e01c806370a08231116100c0578063900ed17811610074578063dc71752d11610059578063dc71752d14610445578063f2fde38b14610482578063f58f8171146104a257600080fd5b8063900ed17814610410578063d317a83c1461043057600080fd5b8063841e4561116100a5578063841e4561146103915780638456cb59146103b15780638da5cb5b146103c657600080fd5b806370a0823114610339578063715018a61461037c57600080fd5b80633f4ba83a11610117578063572d0640116100fc578063572d0640146102805780635c975abb146102ca57806361d027b31461030c57600080fd5b80633f4ba83a14610219578063480a58ee1461022e57600080fd5b80632458a95f116101485780632458a95f146101c657806339f91003146101e65780633f34439f146101f957600080fd5b8063080e6398146101645780632430e9d614610186575b600080fd5b34801561017057600080fd5b5061018461017f3660046117a3565b6104c2565b005b34801561019257600080fd5b506101b36101a13660046117e7565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b3480156101d257600080fd5b506101846101e1366004611850565b6105dc565b6101846101f43660046117e7565b6106ea565b34801561020557600080fd5b506101846102143660046118c1565b610844565b34801561022557600080fd5b50610184610966565b34801561023a57600080fd5b5060005461025b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bd565b34801561028c57600080fd5b506002546102a9906fffffffffffffffffffffffffffffffff1681565b6040516fffffffffffffffffffffffffffffffff90911681526020016101bd565b3480156102d657600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1660405190151581526020016101bd565b34801561031857600080fd5b5060035461025b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561034557600080fd5b506101b36103543660046117e7565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b34801561038857600080fd5b50610184610978565b34801561039d57600080fd5b506101846103ac3660046117e7565b61098a565b3480156103bd57600080fd5b50610184610a59565b3480156103d257600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005473ffffffffffffffffffffffffffffffffffffffff1661025b565b34801561041c57600080fd5b5061018461042b366004611910565b610a69565b34801561043c57600080fd5b506101b3610b63565b34801561045157600080fd5b506002546102a99070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1681565b34801561048e57600080fd5b5061018461049d3660046117e7565b610c39565b3480156104ae57600080fd5b506101846104bd366004611949565b610ca2565b6104ca610f4a565b6002546fffffffffffffffffffffffffffffffff9081169082160361051b576040517fa88ee57700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806fffffffffffffffffffffffffffffffff16600003610566576040517ebfc92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff83169081179091556040519081527fd5b6bdd60da1484326fbe658be1b26f9c10be7cb231bcca7ae05c1aa1d1b0990906020015b60405180910390a150565b6105e4610f4a565b73ffffffffffffffffffffffffffffffffffffffff851660009081526004602052604081208054869290610619908490611a05565b90915550506002805484919060109061065990849070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16611a18565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055508473ffffffffffffffffffffffffffffffffffffffff167fbaf9add78373f0cac93f4be4f43865565b55440f8d45a3f8a94d884c6a51fc66858585856040516106db9493929190611a91565b60405180910390a25050505050565b6106f2610fd8565b6003546107159073ffffffffffffffffffffffffffffffffffffffff1634611034565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610783573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a79190611ba8565b505050915050600068056bc75e2d6310000082346107c59190611bf8565b6107cf9190611c0f565b905060006107dd8483611143565b604080513481526020810183905290810184905290915060009073ffffffffffffffffffffffffffffffffffffffff86169033907f0ca214f8a19535023cdee0ea74c48997966a87ed490c81c28c235d8c93c8d19a9060600160405180910390a450505050565b61084c610fd8565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040812054908190036108ac576040517f56e7ec5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003546108d3908490339073ffffffffffffffffffffffffffffffffffffffff1685611276565b6000816108e3620f424085611bf8565b6108ed9190611c0f565b905060006108fb8683611143565b604080518681526020810183905290810184905290915073ffffffffffffffffffffffffffffffffffffffff808716919088169033907f0ca214f8a19535023cdee0ea74c48997966a87ed490c81c28c235d8c93c8d19a9060600160405180910390a4505050505050565b61096e610f4a565b610976611415565b565b610980610f4a565b61097660006114ac565b610992610f4a565b60035473ffffffffffffffffffffffffffffffffffffffff8083169116036109e6576040517fa88ee57700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fb6a5e89655cf506139085f051af608195ed056f8dc550b180a1c38d401e2b6c4906020016105d1565b610a61610f4a565b610976611542565b610a71610f4a565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205481151590151503610ad4576040517fa88ee57700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8015610ae857610ae3826115bb565b610b0f565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260408120555b6040805173ffffffffffffffffffffffffffffffffffffffff8416815282151560208201527fc2af510a9d71a987e12298c8d681a18ee686d181e6fb0bd4166cc01cd7eed4b3910160405180910390a15050565b60008054604080517ffeaf968c0000000000000000000000000000000000000000000000000000000081529051839273ffffffffffffffffffffffffffffffffffffffff169163feaf968c9160048083019260a09291908290030181865afa158015610bd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf79190611ba8565b5050600254919350839250610c299168056bc75e2d6310000091506fffffffffffffffffffffffffffffffff16611bf8565b610c339190611c0f565b91505090565b610c41610f4a565b73ffffffffffffffffffffffffffffffffffffffff8116610c96576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b610c9f816114ac565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610ced5750825b905060008267ffffffffffffffff166001148015610d0a5750303b155b905081158015610d18575080155b15610d4f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610db05784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b876fffffffffffffffffffffffffffffffff16600003610dfb576040517ebfc92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e04866116a3565b610e0c611542565b6000805473ffffffffffffffffffffffffffffffffffffffff808e167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316178355600280546fffffffffffffffffffffffffffffffff8d167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090911617905560038054918b16919092161790555b89811015610edb57610ed38b8b83818110610eb957610eb9611c4a565b9050602002016020810190610ece91906117e7565b6115bb565b600101610e9c565b508315610f3d5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b33610f897f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610976576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610c8d565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615610976576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff841690839060405161106b9190611c79565b60006040518083038185875af1925050503d80600081146110a8576040519150601f19603f3d011682016040523d82523d6000602084013e6110ad565b606091505b505090508061113e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527f20455448207472616e73666572206661696c65640000000000000000000000006064820152608401610c8d565b505050565b60025460009081906fffffffffffffffffffffffffffffffff1661116f670de0b6b3a764000085611bf8565b6111799190611c0f565b9050806000036111b5576040517fda2fc5e300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600260108282829054906101000a90046fffffffffffffffffffffffffffffffff166111e29190611a18565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555080600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112679190611a05565b90915550909150505b92915050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905291516000928392908816916113159190611c79565b6000604051808303816000865af19150503d8060008114611352576040519150601f19603f3d011682016040523d82523d6000602084013e611357565b606091505b50915091508180156113815750805115806113815750808060200190518101906113819190611ca8565b61140d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a20747260448201527f616e7366657246726f6d206661696c65640000000000000000000000000000006064820152608401610c8d565b505050505050565b61141d6116b4565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016105d1565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b61154a610fd8565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833611487565b60008173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611608573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162c9190611cc5565b60ff1690508060000361166b576040517f2e99569000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61167681600a611e08565b73ffffffffffffffffffffffffffffffffffffffff90921660009081526001602052604090209190915550565b6116ab61170f565b610c9f81611776565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610976576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610976576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c4161170f565b80356fffffffffffffffffffffffffffffffff8116811461179e57600080fd5b919050565b6000602082840312156117b557600080fd5b6117be8261177e565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610c9f57600080fd5b6000602082840312156117f957600080fd5b81356117be816117c5565b60008083601f84011261181657600080fd5b50813567ffffffffffffffff81111561182e57600080fd5b6020830191508360208260051b850101111561184957600080fd5b9250929050565b60008060008060006080868803121561186857600080fd5b8535611873816117c5565b9450602086013593506118886040870161177e565b9250606086013567ffffffffffffffff8111156118a457600080fd5b6118b088828901611804565b969995985093965092949392505050565b6000806000606084860312156118d657600080fd5b83356118e1816117c5565b925060208401356118f1816117c5565b929592945050506040919091013590565b8015158114610c9f57600080fd5b6000806040838503121561192357600080fd5b823561192e816117c5565b9150602083013561193e81611902565b809150509250929050565b60008060008060008060a0878903121561196257600080fd5b863561196d816117c5565b9550602087013567ffffffffffffffff81111561198957600080fd5b61199589828a01611804565b90965094506119a890506040880161177e565b925060608701356119b8816117c5565b915060808701356119c8816117c5565b809150509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115611270576112706119d6565b6fffffffffffffffffffffffffffffffff818116838216019080821115611a4157611a416119d6565b5092915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60006060820186835260206fffffffffffffffffffffffffffffffff87166020850152606060408501528185835260808501905060808660051b86010192508660005b87811015611b7f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8087860301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18a3603018112611b3557600080fd5b8901848101903567ffffffffffffffff811115611b5157600080fd5b803603821315611b6057600080fd5b611b6b878284611a48565b965050509183019190830190600101611ad4565b50929998505050505050505050565b805169ffffffffffffffffffff8116811461179e57600080fd5b600080600080600060a08688031215611bc057600080fd5b611bc986611b8e565b9450602086015193506040860151925060608601519150611bec60808701611b8e565b90509295509295909350565b8082028115828204841417611270576112706119d6565b600082611c45577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000825160005b81811015611c9a5760208186018101518583015201611c80565b506000920191825250919050565b600060208284031215611cba57600080fd5b81516117be81611902565b600060208284031215611cd757600080fd5b815160ff811681146117be57600080fd5b600181815b80851115611d4157817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611d2757611d276119d6565b80851615611d3457918102915b93841c9390800290611ced565b509250929050565b600082611d5857506001611270565b81611d6557506000611270565b8160018114611d7b5760028114611d8557611da1565b6001915050611270565b60ff841115611d9657611d966119d6565b50506001821b611270565b5060208310610133831016604e8410600b8410161715611dc4575081810a611270565b611dce8383611ce8565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611e0057611e006119d6565b029392505050565b60006117be8383611d4956fea2646970667358221220584f9cfe62043e59cd4eac50b828851b20679e4c7760c8bcfa6c882876f0c5b064736f6c63430008180033