Source Code
Overview
ETH Balance
0 ETH
More Info
ContractCreator
Multichain Info
N/A
Latest 25 from a total of 4,573 transactions
| Transaction Hash |
Method
|
Block
|
From
|
To
|
Amount
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Transfer With Re... | 10459093 | 3 hrs ago | IN | 0.0000051 ETH | 0.00021224 | ||||
| Transfer With Re... | 10459090 | 3 hrs ago | IN | 0.0000051 ETH | 0.00021224 | ||||
| Transfer With Re... | 10459088 | 3 hrs ago | IN | 0.00005104 ETH | 0.00021224 | ||||
| Transfer With Re... | 10458860 | 4 hrs ago | IN | 0.00005157 ETH | 0.00021224 | ||||
| Transfer With Re... | 10458630 | 5 hrs ago | IN | 0.00000521 ETH | 0.00021224 | ||||
| Transfer With Re... | 10458628 | 5 hrs ago | IN | 0.00000521 ETH | 0.00021224 | ||||
| Transfer With Re... | 10458626 | 5 hrs ago | IN | 0.0000521 ETH | 0.00021224 | ||||
| Transfer With Re... | 10458545 | 5 hrs ago | IN | 0.0000521 ETH | 0.00021224 | ||||
| Transfer With Re... | 10458534 | 5 hrs ago | IN | 0.00000521 ETH | 0.00021224 | ||||
| Transfer With Re... | 10458524 | 5 hrs ago | IN | 0.00000516 ETH | 0.00021224 | ||||
| Transfer With Re... | 10458521 | 5 hrs ago | IN | 0.00000516 ETH | 0.00021224 | ||||
| Transfer With Re... | 10458519 | 5 hrs ago | IN | 0.00005156 ETH | 0.00021224 | ||||
| Transfer With Re... | 10458479 | 5 hrs ago | IN | 0.00000516 ETH | 0.00021224 | ||||
| Transfer With Re... | 10458478 | 5 hrs ago | IN | 0.00000516 ETH | 0.00021224 | ||||
| Transfer With Re... | 10458475 | 5 hrs ago | IN | 0.00005156 ETH | 0.00021224 | ||||
| Transfer With Re... | 10458449 | 5 hrs ago | IN | 0.00005156 ETH | 0.00021224 | ||||
| Transfer With Re... | 10458384 | 6 hrs ago | IN | 0.00005209 ETH | 0.00021224 | ||||
| Transfer With Re... | 10457620 | 8 hrs ago | IN | 0.00000516 ETH | 0.00021224 | ||||
| Transfer With Re... | 10457617 | 8 hrs ago | IN | 0.00000516 ETH | 0.00021224 | ||||
| Transfer With Re... | 10457615 | 9 hrs ago | IN | 0.00005157 ETH | 0.00021224 | ||||
| Transfer With Re... | 10457541 | 9 hrs ago | IN | 0.00005218 ETH | 0.00021225 | ||||
| Transfer With Re... | 10457353 | 10 hrs ago | IN | 0.00000519 ETH | 0.00021224 | ||||
| Transfer With Re... | 10457350 | 10 hrs ago | IN | 0.00000519 ETH | 0.00021224 | ||||
| Transfer With Re... | 10457348 | 10 hrs ago | IN | 0.00005191 ETH | 0.00021224 | ||||
| Transfer With Re... | 10457288 | 10 hrs ago | IN | 0.00005191 ETH | 0.00021224 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
To
|
Amount
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 10459093 | 3 hrs ago | 0.00000014 ETH | ||||
| Transfer | 10459093 | 3 hrs ago | 0.00000495 ETH | ||||
| Transfer | 10459090 | 3 hrs ago | 0.00000014 ETH | ||||
| Transfer | 10459090 | 3 hrs ago | 0.00000495 ETH | ||||
| Transfer | 10459088 | 3 hrs ago | 0.00000148 ETH | ||||
| Transfer | 10459088 | 3 hrs ago | 0.00004955 ETH | ||||
| Transfer | 10458866 | 4 hrs ago | 0.00000902 ETH | ||||
| Transfer | 10458866 | 4 hrs ago | 0.00005006 ETH | ||||
| Transfer With Re... | 10458866 | 4 hrs ago | 0.00005908 ETH | ||||
| Transfer | 10458866 | 4 hrs ago | 0.00005908 ETH | ||||
| Transfer | 10458866 | 4 hrs ago | 0.00005006 ETH | ||||
| Transfer With Re... | 10458866 | 4 hrs ago | 0.00010915 ETH | ||||
| Transfer | 10458866 | 4 hrs ago | 0.00010915 ETH | ||||
| Transfer | 10458866 | 4 hrs ago | 0.00005006 ETH | ||||
| Transfer With Re... | 10458866 | 4 hrs ago | 0.00015922 ETH | ||||
| Transfer | 10458866 | 4 hrs ago | 0.00015922 ETH | ||||
| Transfer | 10458866 | 4 hrs ago | 0.00005006 ETH | ||||
| Transfer With Re... | 10458866 | 4 hrs ago | 0.00020928 ETH | ||||
| Transfer | 10458866 | 4 hrs ago | 0.00020928 ETH | ||||
| Transfer | 10458866 | 4 hrs ago | 0.00005006 ETH | ||||
| Transfer With Re... | 10458866 | 4 hrs ago | 0.00025935 ETH | ||||
| Transfer | 10458866 | 4 hrs ago | 0.00025935 ETH | ||||
| Transfer | 10458866 | 4 hrs ago | 0.00005006 ETH | ||||
| Transfer With Re... | 10458866 | 4 hrs ago | 0.00030942 ETH | ||||
| Transfer | 10458860 | 4 hrs ago | 0.0000015 ETH |
Loading...
Loading
Loading...
Loading
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
EthConversionProxy
Compiler Version
v0.8.9+commit.e5eed63a
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import './ChainlinkConversionPath.sol';
import '@openzeppelin/contracts/security/ReentrancyGuard.sol';
import './legacy_openzeppelin/contracts/access/roles/WhitelistAdminRole.sol';
/**
* @title EthConversionProxy
* @notice This contract converts from chainlink then swaps ETH (or native token)
* before paying a request thanks to a conversion payment proxy.
* The inheritance from ReentrancyGuard is required to perform
* "transferExactEthWithReferenceAndFee" on the eth-fee-proxy contract
*/
contract EthConversionProxy is ReentrancyGuard, WhitelistAdminRole {
address public paymentProxy;
ChainlinkConversionPath public chainlinkConversionPath;
address public nativeTokenHash;
constructor(
address _paymentProxyAddress,
address _chainlinkConversionPathAddress,
address _nativeTokenHash,
address _owner
) {
paymentProxy = _paymentProxyAddress;
chainlinkConversionPath = ChainlinkConversionPath(_chainlinkConversionPathAddress);
nativeTokenHash = _nativeTokenHash;
renounceWhitelistAdmin();
_addWhitelistAdmin(_owner);
}
// Event to declare a conversion with a reference
event TransferWithConversionAndReference(
uint256 amount,
address currency,
bytes indexed paymentReference,
uint256 feeAmount,
uint256 maxRateTimespan
);
// Event to declare a transfer with a reference
// This event is emitted by this contract from a delegate call of the payment-proxy
event TransferWithReferenceAndFee(
address to,
uint256 amount,
bytes indexed paymentReference,
uint256 feeAmount,
address feeAddress
);
/**
* @notice Performs an ETH transfer with a reference computing the payment amount based on the request amount
* @param _to Transfer recipient of the payement
* @param _requestAmount Request amount
* @param _path Conversion path
* @param _paymentReference Reference of the payment related
* @param _feeAmount The amount of the payment fee
* @param _feeAddress The fee recipient
* @param _maxRateTimespan Max time span with the oldestrate, ignored if zero
*/
function transferWithReferenceAndFee(
address _to,
uint256 _requestAmount,
address[] calldata _path,
bytes calldata _paymentReference,
uint256 _feeAmount,
address _feeAddress,
uint256 _maxRateTimespan
) external payable {
require(
_path[_path.length - 1] == nativeTokenHash,
'payment currency must be the native token'
);
(uint256 amountToPay, uint256 amountToPayInFees) = getConversions(
_path,
_requestAmount,
_feeAmount,
_maxRateTimespan
);
// Pay the request and fees
(bool status, ) = paymentProxy.delegatecall(
abi.encodeWithSignature(
'transferExactEthWithReferenceAndFee(address,uint256,bytes,uint256,address)',
_to,
amountToPay,
_paymentReference,
amountToPayInFees,
_feeAddress
)
);
require(status, 'paymentProxy transferExactEthWithReferenceAndFee failed');
// Event to declare a transfer with a reference
emit TransferWithConversionAndReference(
_requestAmount,
// request currency
_path[0],
_paymentReference,
_feeAmount,
_maxRateTimespan
);
}
function getConversions(
address[] memory _path,
uint256 _requestAmount,
uint256 _feeAmount,
uint256 _maxRateTimespan
) internal view returns (uint256 amountToPay, uint256 amountToPayInFees) {
(uint256 rate, uint256 oldestTimestampRate, uint256 decimals) = chainlinkConversionPath.getRate(
_path
);
// Check rate timespan
require(
_maxRateTimespan == 0 || block.timestamp - oldestTimestampRate <= _maxRateTimespan,
'aggregator rate is outdated'
);
// Get the amount to pay in the native token
amountToPay = (_requestAmount * rate) / decimals;
amountToPayInFees = (_feeAmount * rate) / decimals;
}
/**
* @notice Update the conversion path contract used to fetch conversions
* @param _chainlinkConversionPathAddress address of the conversion path contract
*/
function updateConversionPathAddress(address _chainlinkConversionPathAddress)
external
onlyWhitelistAdmin
{
chainlinkConversionPath = ChainlinkConversionPath(_chainlinkConversionPathAddress);
}
/**
* @notice Update the conversion proxy used to process the payment
* @param _paymentProxyAddress address of the ETH conversion proxy
*/
function updateConversionProxyAddress(address _paymentProxyAddress) external onlyWhitelistAdmin {
paymentProxy = _paymentProxyAddress;
}
/**
* @notice Update the native token hash
* @param _nativeTokenHash hash of the native token represented as an eth address
*/
function updateNativeTokenHash(address _nativeTokenHash) external onlyWhitelistAdmin {
nativeTokenHash = _nativeTokenHash;
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import './legacy_openzeppelin/contracts/access/roles/WhitelistAdminRole.sol';
interface ERC20fraction {
function decimals() external view returns (uint8);
}
interface AggregatorFraction {
function decimals() external view returns (uint8);
function latestAnswer() external view returns (int256);
function latestTimestamp() external view returns (uint256);
}
/**
* @title ChainlinkConversionPath
*
* @notice ChainlinkConversionPath is a contract computing currency conversion rates based on Chainlink aggretators
*/
contract ChainlinkConversionPath is WhitelistAdminRole {
uint256 constant PRECISION = 1e18;
uint256 constant NATIVE_TOKEN_DECIMALS = 18;
uint256 constant FIAT_DECIMALS = 8;
address public nativeTokenHash;
/**
* @param _nativeTokenHash hash of the native token
* @param _owner Owner of the contract.
*/
constructor(address _nativeTokenHash, address _owner) {
nativeTokenHash = _nativeTokenHash;
renounceWhitelistAdmin();
_addWhitelistAdmin(_owner);
}
// Mapping of Chainlink aggregators (input currency => output currency => contract address)
// input & output currencies are the addresses of the ERC20 contracts OR the sha3("currency code")
mapping(address => mapping(address => address)) public allAggregators;
// declare a new aggregator
event AggregatorUpdated(address _input, address _output, address _aggregator);
/**
* @notice Update an aggregator
* @param _input address representing the input currency
* @param _output address representing the output currency
* @param _aggregator address of the aggregator contract
*/
function updateAggregator(
address _input,
address _output,
address _aggregator
) external onlyWhitelistAdmin {
allAggregators[_input][_output] = _aggregator;
emit AggregatorUpdated(_input, _output, _aggregator);
}
/**
* @notice Update a list of aggregators
* @param _inputs list of addresses representing the input currencies
* @param _outputs list of addresses representing the output currencies
* @param _aggregators list of addresses of the aggregator contracts
*/
function updateAggregatorsList(
address[] calldata _inputs,
address[] calldata _outputs,
address[] calldata _aggregators
) external onlyWhitelistAdmin {
require(_inputs.length == _outputs.length, 'arrays must have the same length');
require(_inputs.length == _aggregators.length, 'arrays must have the same length');
// For every conversions of the path
for (uint256 i; i < _inputs.length; i++) {
allAggregators[_inputs[i]][_outputs[i]] = _aggregators[i];
emit AggregatorUpdated(_inputs[i], _outputs[i], _aggregators[i]);
}
}
/**
* @notice Computes the conversion of an amount through a list of intermediate conversions
* @param _amountIn Amount to convert
* @param _path List of addresses representing the currencies for the intermediate conversions
* @return result The result after all the conversions
* @return oldestRateTimestamp The oldest timestamp of the path
*/
function getConversion(uint256 _amountIn, address[] calldata _path)
external
view
returns (uint256 result, uint256 oldestRateTimestamp)
{
(uint256 rate, uint256 timestamp, uint256 decimals) = getRate(_path);
// initialize the result
result = (_amountIn * rate) / decimals;
oldestRateTimestamp = timestamp;
}
/**
* @notice Computes the conversion rate from a list of currencies
* @param _path List of addresses representing the currencies for the conversions
* @return rate The rate
* @return oldestRateTimestamp The oldest timestamp of the path
* @return decimals of the conversion rate
*/
function getRate(address[] memory _path)
public
view
returns (
uint256 rate,
uint256 oldestRateTimestamp,
uint256 decimals
)
{
// initialize the result with 18 decimals (for more precision)
rate = PRECISION;
decimals = PRECISION;
oldestRateTimestamp = block.timestamp;
// For every conversion of the path
for (uint256 i; i < _path.length - 1; i++) {
(
AggregatorFraction aggregator,
bool reverseAggregator,
uint256 decimalsInput,
uint256 decimalsOutput
) = getAggregatorAndDecimals(_path[i], _path[i + 1]);
// store the latest timestamp of the path
uint256 currentTimestamp = aggregator.latestTimestamp();
if (currentTimestamp < oldestRateTimestamp) {
oldestRateTimestamp = currentTimestamp;
}
// get the rate of the current step
uint256 currentRate = uint256(aggregator.latestAnswer());
// get the number of decimals of the current rate
uint256 decimalsAggregator = uint256(aggregator.decimals());
// mul with the difference of decimals before the current rate computation (for more precision)
if (decimalsAggregator > decimalsInput) {
rate = rate * (10**(decimalsAggregator - decimalsInput));
}
if (decimalsAggregator < decimalsOutput) {
rate = rate * (10**(decimalsOutput - decimalsAggregator));
}
// Apply the current rate (if path uses an aggregator in the reverse way, div instead of mul)
if (reverseAggregator) {
rate = (rate * (10**decimalsAggregator)) / currentRate;
} else {
rate = (rate * currentRate) / (10**decimalsAggregator);
}
// div with the difference of decimals AFTER the current rate computation (for more precision)
if (decimalsAggregator < decimalsInput) {
rate = rate / (10**(decimalsInput - decimalsAggregator));
}
if (decimalsAggregator > decimalsOutput) {
rate = rate / (10**(decimalsAggregator - decimalsOutput));
}
}
}
/**
* @notice Gets aggregators and decimals of two currencies
* @param _input input Address
* @param _output output Address
* @return aggregator to get the rate between the two currencies
* @return reverseAggregator true if the aggregator returned give the rate from _output to _input
* @return decimalsInput decimals of _input
* @return decimalsOutput decimals of _output
*/
function getAggregatorAndDecimals(address _input, address _output)
private
view
returns (
AggregatorFraction aggregator,
bool reverseAggregator,
uint256 decimalsInput,
uint256 decimalsOutput
)
{
// Try to get the right aggregator for the conversion
aggregator = AggregatorFraction(allAggregators[_input][_output]);
reverseAggregator = false;
// if no aggregator found we try to find an aggregator in the reverse way
if (address(aggregator) == address(0x00)) {
aggregator = AggregatorFraction(allAggregators[_output][_input]);
reverseAggregator = true;
}
require(address(aggregator) != address(0x00), 'No aggregator found');
// get the decimals for the two currencies
decimalsInput = getDecimals(_input);
decimalsOutput = getDecimals(_output);
}
/**
* @notice Gets decimals from an address currency
* @param _addr address to check
* @return decimals number of decimals
*/
function getDecimals(address _addr) private view returns (uint256 decimals) {
// by default we assume it is fiat
decimals = FIAT_DECIMALS;
// if address is the hash of the ETH currency
if (_addr == nativeTokenHash) {
decimals = NATIVE_TOKEN_DECIMALS;
} else if (isContract(_addr)) {
// otherwise, we get the decimals from the erc20 directly
decimals = ERC20fraction(_addr).decimals();
}
}
/**
* @notice Checks if an address is a contract
* @param _addr Address to check
* @return true if the address hosts a contract, false otherwise
*/
function isContract(address _addr) private view returns (bool) {
uint32 size;
// solium-disable security/no-inline-assembly
assembly {
size := extcodesize(_addr)
}
return (size > 0);
}
/**
* @notice Update the native token hash
* @param _nativeTokenHash hash of the native token represented as an eth address
*/
function updateNativeTokenHash(address _nativeTokenHash) external onlyWhitelistAdmin {
nativeTokenHash = _nativeTokenHash;
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import '@openzeppelin/contracts/utils/Context.sol';
import '../Roles.sol';
/**
* @title WhitelistAdminRole
* @dev WhitelistAdmins are responsible for assigning and removing Whitelisted accounts.
*/
abstract contract WhitelistAdminRole is Context {
using Roles for Roles.Role;
event WhitelistAdminAdded(address indexed account);
event WhitelistAdminRemoved(address indexed account);
Roles.Role private _whitelistAdmins;
constructor() {
_addWhitelistAdmin(_msgSender());
}
modifier onlyWhitelistAdmin() {
require(
isWhitelistAdmin(_msgSender()),
'WhitelistAdminRole: caller does not have the WhitelistAdmin role'
);
_;
}
function isWhitelistAdmin(address account) public view returns (bool) {
return _whitelistAdmins.has(account);
}
function addWhitelistAdmin(address account) public onlyWhitelistAdmin {
_addWhitelistAdmin(account);
}
function renounceWhitelistAdmin() public {
_removeWhitelistAdmin(_msgSender());
}
function _addWhitelistAdmin(address account) internal {
_whitelistAdmins.add(account);
emit WhitelistAdminAdded(account);
}
function _removeWhitelistAdmin(address account) internal {
_whitelistAdmins.remove(account);
emit WhitelistAdminRemoved(account);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol)
pragma solidity ^0.8.0;
/**
* @dev Contract module that helps prevent reentrant calls to a function.
*
* Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
* available, which can be applied to functions to make sure there are no nested
* (reentrant) calls to them.
*
* Note that because there is a single `nonReentrant` guard, functions marked as
* `nonReentrant` may not call one another. This can be worked around by making
* those functions `private`, and then adding `external` `nonReentrant` entry
* points to them.
*
* TIP: If you would like to learn more about reentrancy and alternative ways
* to protect against it, check out our blog post
* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
*/
abstract contract ReentrancyGuard {
// Booleans are more expensive than uint256 or any type that takes up a full
// word because each write operation emits an extra SLOAD to first read the
// slot's contents, replace the bits taken up by the boolean, and then write
// back. This is the compiler's defense against contract upgrades and
// pointer aliasing, and it cannot be disabled.
// The values being non-zero value makes deployment a bit more expensive,
// but in exchange the refund on every call to nonReentrant will be lower in
// amount. Since refunds are capped to a percentage of the total
// transaction's gas, it is best to keep them low in cases like this one, to
// increase the likelihood of the full refund coming into effect.
uint256 private constant _NOT_ENTERED = 1;
uint256 private constant _ENTERED = 2;
uint256 private _status;
constructor() {
_status = _NOT_ENTERED;
}
/**
* @dev Prevents a contract from calling itself, directly or indirectly.
* Calling a `nonReentrant` function from another `nonReentrant`
* function is not supported. It is possible to prevent this from happening
* by making the `nonReentrant` function external, and making it call a
* `private` function that does the actual work.
*/
modifier nonReentrant() {
// On the first call to nonReentrant, _notEntered will be true
require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
// Any calls to nonReentrant after this point will fail
_status = _ENTERED;
_;
// By storing the original value once again, a refund is triggered (see
// https://eips.ethereum.org/EIPS/eip-2200)
_status = _NOT_ENTERED;
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/**
* @title Roles
* @dev Library for managing addresses assigned to a Role.
*/
library Roles {
struct Role {
mapping(address => bool) bearer;
}
/**
* @dev Give an account access to this role.
*/
function add(Role storage role, address account) internal {
require(!has(role, account), 'Roles: account already has role');
role.bearer[account] = true;
}
/**
* @dev Remove an account's access to this role.
*/
function remove(Role storage role, address account) internal {
require(has(role, account), 'Roles: account does not have role');
role.bearer[account] = false;
}
/**
* @dev Check if an account has this role.
* @return bool
*/
function has(Role storage role, address account) internal view returns (bool) {
require(account != address(0), 'Roles: account is the zero address');
return role.bearer[account];
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
pragma solidity ^0.8.0;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}{
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"libraries": {}
}Contract ABI
API[{"inputs":[{"internalType":"address","name":"_paymentProxyAddress","type":"address"},{"internalType":"address","name":"_chainlinkConversionPathAddress","type":"address"},{"internalType":"address","name":"_nativeTokenHash","type":"address"},{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"currency","type":"address"},{"indexed":true,"internalType":"bytes","name":"paymentReference","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"feeAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxRateTimespan","type":"uint256"}],"name":"TransferWithConversionAndReference","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"bytes","name":"paymentReference","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"feeAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"feeAddress","type":"address"}],"name":"TransferWithReferenceAndFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"WhitelistAdminAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"WhitelistAdminRemoved","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addWhitelistAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"chainlinkConversionPath","outputs":[{"internalType":"contract ChainlinkConversionPath","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isWhitelistAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nativeTokenHash","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paymentProxy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceWhitelistAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_requestAmount","type":"uint256"},{"internalType":"address[]","name":"_path","type":"address[]"},{"internalType":"bytes","name":"_paymentReference","type":"bytes"},{"internalType":"uint256","name":"_feeAmount","type":"uint256"},{"internalType":"address","name":"_feeAddress","type":"address"},{"internalType":"uint256","name":"_maxRateTimespan","type":"uint256"}],"name":"transferWithReferenceAndFee","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_chainlinkConversionPathAddress","type":"address"}],"name":"updateConversionPathAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_paymentProxyAddress","type":"address"}],"name":"updateConversionProxyAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_nativeTokenHash","type":"address"}],"name":"updateNativeTokenHash","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60806040523480156200001157600080fd5b5060405162001ec038038062001ec08339818101604052810190620000379190620004d3565b60016000819055506200005f620000536200014d60201b60201c565b6200015560201b60201c565b83600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000132620001b660201b60201c565b62000143816200015560201b60201c565b50505050620006f8565b600033905090565b62000170816001620001d860201b620007e91790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129960405160405180910390a250565b620001d6620001ca6200014d60201b60201c565b6200028b60201b60201c565b565b620001ea8282620002ec60201b60201c565b156200022d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200022490620005a6565b60405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b620002a6816001620003b760201b620008911790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f0a8eb35e5ca14b3d6f28e4abf2f128dbab231a58b56e89beb5d636115001e16560405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000357906200063e565b60405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b620003c98282620002ec60201b60201c565b6200040b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200040290620006d6565b60405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200049b826200046e565b9050919050565b620004ad816200048e565b8114620004b957600080fd5b50565b600081519050620004cd81620004a2565b92915050565b60008060008060808587031215620004f057620004ef62000469565b5b60006200050087828801620004bc565b94505060206200051387828801620004bc565b93505060406200052687828801620004bc565b92505060606200053987828801620004bc565b91505092959194509250565b600082825260208201905092915050565b7f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500600082015250565b60006200058e601f8362000545565b91506200059b8262000556565b602082019050919050565b60006020820190508181036000830152620005c1816200057f565b9050919050565b7f526f6c65733a206163636f756e7420697320746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006200062660228362000545565b91506200063382620005c8565b604082019050919050565b60006020820190508181036000830152620006598162000617565b9050919050565b7f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c60008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b6000620006be60218362000545565b9150620006cb8262000660565b604082019050919050565b60006020820190508181036000830152620006f181620006af565b9050919050565b6117b880620007086000396000f3fe6080604052600436106100915760003560e01c8063946647f111610059578063946647f114610153578063ac473c8a1461017e578063bb5f747b1461019a578063c0e6822f146101d7578063d515bb031461020057610091565b80633cd3efef146100965780634c5a628c146100c15780635536bcde146100d85780637362d9c8146101015780637a38d1cb1461012a575b600080fd5b3480156100a257600080fd5b506100ab61022b565b6040516100b89190610c4d565b60405180910390f35b3480156100cd57600080fd5b506100d6610251565b005b3480156100e457600080fd5b506100ff60048036038101906100fa9190610c9e565b610263565b005b34801561010d57600080fd5b5061012860048036038101906101239190610c9e565b6102f6565b005b34801561013657600080fd5b50610151600480360381019061014c9190610c9e565b610351565b005b34801561015f57600080fd5b506101686103e4565b6040516101759190610d2a565b60405180910390f35b61019860048036038101906101939190610e36565b61040a565b005b3480156101a657600080fd5b506101c160048036038101906101bc9190610c9e565b610713565b6040516101ce9190610f33565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f99190610c9e565b610730565b005b34801561020c57600080fd5b506102156107c3565b6040516102229190610c4d565b60405180910390f35b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61026161025c610938565b610940565b565b61027361026e610938565b610713565b6102b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102a990610fd1565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610306610301610938565b610713565b610345576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033c90610fd1565b60405180910390fd5b61034e8161099a565b50565b61036161035c610938565b610713565b6103a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039790610fd1565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16878760018a8a90506104559190611020565b81811061046557610464611054565b5b905060200201602081019061047a9190610c9e565b73ffffffffffffffffffffffffffffffffffffffff16146104d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104c7906110f5565b60405180910390fd5b600080610520898980806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508b87866109f4565b915091506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168c848a8a868a60405160240161057a96959493929190611182565b6040516020818303038152906040527fd7c95e98000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516106049190611258565b600060405180830381855af49150503d806000811461063f576040519150601f19603f3d011682016040523d82523d6000602084013e610644565b606091505b5050905080610688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067f906112e1565b60405180910390fd5b8787604051610698929190611326565b60405180910390207f96d0d1d75923f40b50f6fe74613b2c23239149607848fbca3941fee7ac041cdc8c8c8c60008181106106d6576106d5611054565b5b90506020020160208101906106eb9190610c9e565b89886040516106fd949392919061133f565b60405180910390a2505050505050505050505050565b6000610729826001610b4490919063ffffffff16565b9050919050565b61074061073b610938565b610713565b61077f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077690610fd1565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107f38282610b44565b15610833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082a906113d0565b60405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61089b8282610b44565b6108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d190611462565b60405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600033905090565b61095481600161089190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f0a8eb35e5ca14b3d6f28e4abf2f128dbab231a58b56e89beb5d636115001e16560405160405180910390a250565b6109ae8160016107e990919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129960405160405180910390a250565b6000806000806000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166397edd4fa8a6040518263ffffffff1660e01b8152600401610a579190611540565b60606040518083038186803b158015610a6f57600080fd5b505afa158015610a83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa79190611577565b9250925092506000861480610ac75750858242610ac49190611020565b11155b610b06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afd90611616565b60405180910390fd5b808389610b139190611636565b610b1d91906116bf565b9450808388610b2c9190611636565b610b3691906116bf565b935050505094509492505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610bb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bac90611762565b60405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c3782610c0c565b9050919050565b610c4781610c2c565b82525050565b6000602082019050610c626000830184610c3e565b92915050565b600080fd5b600080fd5b610c7b81610c2c565b8114610c8657600080fd5b50565b600081359050610c9881610c72565b92915050565b600060208284031215610cb457610cb3610c68565b5b6000610cc284828501610c89565b91505092915050565b6000819050919050565b6000610cf0610ceb610ce684610c0c565b610ccb565b610c0c565b9050919050565b6000610d0282610cd5565b9050919050565b6000610d1482610cf7565b9050919050565b610d2481610d09565b82525050565b6000602082019050610d3f6000830184610d1b565b92915050565b6000819050919050565b610d5881610d45565b8114610d6357600080fd5b50565b600081359050610d7581610d4f565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112610da057610d9f610d7b565b5b8235905067ffffffffffffffff811115610dbd57610dbc610d80565b5b602083019150836020820283011115610dd957610dd8610d85565b5b9250929050565b60008083601f840112610df657610df5610d7b565b5b8235905067ffffffffffffffff811115610e1357610e12610d80565b5b602083019150836001820283011115610e2f57610e2e610d85565b5b9250929050565b600080600080600080600080600060e08a8c031215610e5857610e57610c68565b5b6000610e668c828d01610c89565b9950506020610e778c828d01610d66565b98505060408a013567ffffffffffffffff811115610e9857610e97610c6d565b5b610ea48c828d01610d8a565b975097505060608a013567ffffffffffffffff811115610ec757610ec6610c6d565b5b610ed38c828d01610de0565b95509550506080610ee68c828d01610d66565b93505060a0610ef78c828d01610c89565b92505060c0610f088c828d01610d66565b9150509295985092959850929598565b60008115159050919050565b610f2d81610f18565b82525050565b6000602082019050610f486000830184610f24565b92915050565b600082825260208201905092915050565b7f57686974656c69737441646d696e526f6c653a2063616c6c657220646f65732060008201527f6e6f742068617665207468652057686974656c69737441646d696e20726f6c65602082015250565b6000610fbb604083610f4e565b9150610fc682610f5f565b604082019050919050565b60006020820190508181036000830152610fea81610fae565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061102b82610d45565b915061103683610d45565b92508282101561104957611048610ff1565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f7061796d656e742063757272656e6379206d75737420626520746865206e617460008201527f69766520746f6b656e0000000000000000000000000000000000000000000000602082015250565b60006110df602983610f4e565b91506110ea82611083565b604082019050919050565b6000602082019050818103600083015261110e816110d2565b9050919050565b61111e81610d45565b82525050565b600082825260208201905092915050565b82818337600083830152505050565b6000601f19601f8301169050919050565b60006111618385611124565b935061116e838584611135565b61117783611144565b840190509392505050565b600060a0820190506111976000830189610c3e565b6111a46020830188611115565b81810360408301526111b7818688611155565b90506111c66060830185611115565b6111d36080830184610c3e565b979650505050505050565b600081519050919050565b600081905092915050565b60005b838110156112125780820151818401526020810190506111f7565b83811115611221576000848401525b50505050565b6000611232826111de565b61123c81856111e9565b935061124c8185602086016111f4565b80840191505092915050565b60006112648284611227565b915081905092915050565b7f7061796d656e7450726f7879207472616e73666572457861637445746857697460008201527f685265666572656e6365416e64466565206661696c6564000000000000000000602082015250565b60006112cb603783610f4e565b91506112d68261126f565b604082019050919050565b600060208201905081810360008301526112fa816112be565b9050919050565b600061130d83856111e9565b935061131a838584611135565b82840190509392505050565b6000611333828486611301565b91508190509392505050565b60006080820190506113546000830187611115565b6113616020830186610c3e565b61136e6040830185611115565b61137b6060830184611115565b95945050505050565b7f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500600082015250565b60006113ba601f83610f4e565b91506113c582611384565b602082019050919050565b600060208201905081810360008301526113e9816113ad565b9050919050565b7f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c60008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b600061144c602183610f4e565b9150611457826113f0565b604082019050919050565b6000602082019050818103600083015261147b8161143f565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6114b781610c2c565b82525050565b60006114c983836114ae565b60208301905092915050565b6000602082019050919050565b60006114ed82611482565b6114f7818561148d565b93506115028361149e565b8060005b8381101561153357815161151a88826114bd565b9750611525836114d5565b925050600181019050611506565b5085935050505092915050565b6000602082019050818103600083015261155a81846114e2565b905092915050565b60008151905061157181610d4f565b92915050565b6000806000606084860312156115905761158f610c68565b5b600061159e86828701611562565b93505060206115af86828701611562565b92505060406115c086828701611562565b9150509250925092565b7f61676772656761746f722072617465206973206f757464617465640000000000600082015250565b6000611600601b83610f4e565b915061160b826115ca565b602082019050919050565b6000602082019050818103600083015261162f816115f3565b9050919050565b600061164182610d45565b915061164c83610d45565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561168557611684610ff1565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006116ca82610d45565b91506116d583610d45565b9250826116e5576116e4611690565b5b828204905092915050565b7f526f6c65733a206163636f756e7420697320746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061174c602283610f4e565b9150611757826116f0565b604082019050919050565b6000602082019050818103600083015261177b8161173f565b905091905056fea26469706673582212205dfdf7a3721beb25ec3ad153c8c9d9c53d3020aa040530da479065255035801564736f6c634300080900330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004e64c2d06d19d13061e62e291b2c4e9fe5679b93
Deployed Bytecode
0x6080604052600436106100915760003560e01c8063946647f111610059578063946647f114610153578063ac473c8a1461017e578063bb5f747b1461019a578063c0e6822f146101d7578063d515bb031461020057610091565b80633cd3efef146100965780634c5a628c146100c15780635536bcde146100d85780637362d9c8146101015780637a38d1cb1461012a575b600080fd5b3480156100a257600080fd5b506100ab61022b565b6040516100b89190610c4d565b60405180910390f35b3480156100cd57600080fd5b506100d6610251565b005b3480156100e457600080fd5b506100ff60048036038101906100fa9190610c9e565b610263565b005b34801561010d57600080fd5b5061012860048036038101906101239190610c9e565b6102f6565b005b34801561013657600080fd5b50610151600480360381019061014c9190610c9e565b610351565b005b34801561015f57600080fd5b506101686103e4565b6040516101759190610d2a565b60405180910390f35b61019860048036038101906101939190610e36565b61040a565b005b3480156101a657600080fd5b506101c160048036038101906101bc9190610c9e565b610713565b6040516101ce9190610f33565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f99190610c9e565b610730565b005b34801561020c57600080fd5b506102156107c3565b6040516102229190610c4d565b60405180910390f35b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61026161025c610938565b610940565b565b61027361026e610938565b610713565b6102b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102a990610fd1565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610306610301610938565b610713565b610345576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033c90610fd1565b60405180910390fd5b61034e8161099a565b50565b61036161035c610938565b610713565b6103a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039790610fd1565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16878760018a8a90506104559190611020565b81811061046557610464611054565b5b905060200201602081019061047a9190610c9e565b73ffffffffffffffffffffffffffffffffffffffff16146104d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104c7906110f5565b60405180910390fd5b600080610520898980806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508b87866109f4565b915091506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168c848a8a868a60405160240161057a96959493929190611182565b6040516020818303038152906040527fd7c95e98000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516106049190611258565b600060405180830381855af49150503d806000811461063f576040519150601f19603f3d011682016040523d82523d6000602084013e610644565b606091505b5050905080610688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067f906112e1565b60405180910390fd5b8787604051610698929190611326565b60405180910390207f96d0d1d75923f40b50f6fe74613b2c23239149607848fbca3941fee7ac041cdc8c8c8c60008181106106d6576106d5611054565b5b90506020020160208101906106eb9190610c9e565b89886040516106fd949392919061133f565b60405180910390a2505050505050505050505050565b6000610729826001610b4490919063ffffffff16565b9050919050565b61074061073b610938565b610713565b61077f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077690610fd1565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107f38282610b44565b15610833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082a906113d0565b60405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61089b8282610b44565b6108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d190611462565b60405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600033905090565b61095481600161089190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f0a8eb35e5ca14b3d6f28e4abf2f128dbab231a58b56e89beb5d636115001e16560405160405180910390a250565b6109ae8160016107e990919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129960405160405180910390a250565b6000806000806000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166397edd4fa8a6040518263ffffffff1660e01b8152600401610a579190611540565b60606040518083038186803b158015610a6f57600080fd5b505afa158015610a83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa79190611577565b9250925092506000861480610ac75750858242610ac49190611020565b11155b610b06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afd90611616565b60405180910390fd5b808389610b139190611636565b610b1d91906116bf565b9450808388610b2c9190611636565b610b3691906116bf565b935050505094509492505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610bb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bac90611762565b60405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610c3782610c0c565b9050919050565b610c4781610c2c565b82525050565b6000602082019050610c626000830184610c3e565b92915050565b600080fd5b600080fd5b610c7b81610c2c565b8114610c8657600080fd5b50565b600081359050610c9881610c72565b92915050565b600060208284031215610cb457610cb3610c68565b5b6000610cc284828501610c89565b91505092915050565b6000819050919050565b6000610cf0610ceb610ce684610c0c565b610ccb565b610c0c565b9050919050565b6000610d0282610cd5565b9050919050565b6000610d1482610cf7565b9050919050565b610d2481610d09565b82525050565b6000602082019050610d3f6000830184610d1b565b92915050565b6000819050919050565b610d5881610d45565b8114610d6357600080fd5b50565b600081359050610d7581610d4f565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112610da057610d9f610d7b565b5b8235905067ffffffffffffffff811115610dbd57610dbc610d80565b5b602083019150836020820283011115610dd957610dd8610d85565b5b9250929050565b60008083601f840112610df657610df5610d7b565b5b8235905067ffffffffffffffff811115610e1357610e12610d80565b5b602083019150836001820283011115610e2f57610e2e610d85565b5b9250929050565b600080600080600080600080600060e08a8c031215610e5857610e57610c68565b5b6000610e668c828d01610c89565b9950506020610e778c828d01610d66565b98505060408a013567ffffffffffffffff811115610e9857610e97610c6d565b5b610ea48c828d01610d8a565b975097505060608a013567ffffffffffffffff811115610ec757610ec6610c6d565b5b610ed38c828d01610de0565b95509550506080610ee68c828d01610d66565b93505060a0610ef78c828d01610c89565b92505060c0610f088c828d01610d66565b9150509295985092959850929598565b60008115159050919050565b610f2d81610f18565b82525050565b6000602082019050610f486000830184610f24565b92915050565b600082825260208201905092915050565b7f57686974656c69737441646d696e526f6c653a2063616c6c657220646f65732060008201527f6e6f742068617665207468652057686974656c69737441646d696e20726f6c65602082015250565b6000610fbb604083610f4e565b9150610fc682610f5f565b604082019050919050565b60006020820190508181036000830152610fea81610fae565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061102b82610d45565b915061103683610d45565b92508282101561104957611048610ff1565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f7061796d656e742063757272656e6379206d75737420626520746865206e617460008201527f69766520746f6b656e0000000000000000000000000000000000000000000000602082015250565b60006110df602983610f4e565b91506110ea82611083565b604082019050919050565b6000602082019050818103600083015261110e816110d2565b9050919050565b61111e81610d45565b82525050565b600082825260208201905092915050565b82818337600083830152505050565b6000601f19601f8301169050919050565b60006111618385611124565b935061116e838584611135565b61117783611144565b840190509392505050565b600060a0820190506111976000830189610c3e565b6111a46020830188611115565b81810360408301526111b7818688611155565b90506111c66060830185611115565b6111d36080830184610c3e565b979650505050505050565b600081519050919050565b600081905092915050565b60005b838110156112125780820151818401526020810190506111f7565b83811115611221576000848401525b50505050565b6000611232826111de565b61123c81856111e9565b935061124c8185602086016111f4565b80840191505092915050565b60006112648284611227565b915081905092915050565b7f7061796d656e7450726f7879207472616e73666572457861637445746857697460008201527f685265666572656e6365416e64466565206661696c6564000000000000000000602082015250565b60006112cb603783610f4e565b91506112d68261126f565b604082019050919050565b600060208201905081810360008301526112fa816112be565b9050919050565b600061130d83856111e9565b935061131a838584611135565b82840190509392505050565b6000611333828486611301565b91508190509392505050565b60006080820190506113546000830187611115565b6113616020830186610c3e565b61136e6040830185611115565b61137b6060830184611115565b95945050505050565b7f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500600082015250565b60006113ba601f83610f4e565b91506113c582611384565b602082019050919050565b600060208201905081810360008301526113e9816113ad565b9050919050565b7f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c60008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b600061144c602183610f4e565b9150611457826113f0565b604082019050919050565b6000602082019050818103600083015261147b8161143f565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6114b781610c2c565b82525050565b60006114c983836114ae565b60208301905092915050565b6000602082019050919050565b60006114ed82611482565b6114f7818561148d565b93506115028361149e565b8060005b8381101561153357815161151a88826114bd565b9750611525836114d5565b925050600181019050611506565b5085935050505092915050565b6000602082019050818103600083015261155a81846114e2565b905092915050565b60008151905061157181610d4f565b92915050565b6000806000606084860312156115905761158f610c68565b5b600061159e86828701611562565b93505060206115af86828701611562565b92505060406115c086828701611562565b9150509250925092565b7f61676772656761746f722072617465206973206f757464617465640000000000600082015250565b6000611600601b83610f4e565b915061160b826115ca565b602082019050919050565b6000602082019050818103600083015261162f816115f3565b9050919050565b600061164182610d45565b915061164c83610d45565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561168557611684610ff1565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006116ca82610d45565b91506116d583610d45565b9250826116e5576116e4611690565b5b828204905092915050565b7f526f6c65733a206163636f756e7420697320746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061174c602283610f4e565b9150611757826116f0565b604082019050919050565b6000602082019050818103600083015261177b8161173f565b905091905056fea26469706673582212205dfdf7a3721beb25ec3ad153c8c9d9c53d3020aa040530da479065255035801564736f6c63430008090033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004e64c2d06d19d13061e62e291b2c4e9fe5679b93
-----Decoded View---------------
Arg [0] : _paymentProxyAddress (address): 0x0000000000000000000000000000000000000000
Arg [1] : _chainlinkConversionPathAddress (address): 0x0000000000000000000000000000000000000000
Arg [2] : _nativeTokenHash (address): 0x0000000000000000000000000000000000000000
Arg [3] : _owner (address): 0x4E64C2d06d19D13061e62E291b2C4e9fe5679b93
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [3] : 0000000000000000000000004e64c2d06d19d13061e62e291b2c4e9fe5679b93
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.