Module: Mpp::Methods::Evm::Assets
- Defined in:
- lib/mpp/methods/evm/assets.rb
Overview
Known EIP-3009 assets plus helpers to resolve a currency config.
Defined Under Namespace
Classes: Asset
Constant Summary collapse
- BASE_USDC =
Asset.new( address: hex_address("833589fCD6eDb6E08f", "4c7C32D4f71b54bdA02913"), decimals: 6, chain_id: 8453, name: "USD Coin", version: "2" )
- BASE_SEPOLIA_USDC =
Asset.new( address: hex_address("036CbD53842c542663", "4e7929541eC2318f3dCF7e"), decimals: 6, chain_id: 84532, name: "USDC", version: "2" )
- CELO_USDC =
Asset.new( address: hex_address("cebA9300f2b948710d", "2653dD7B07f33A8B32118C"), decimals: 6, chain_id: 42220, name: "USDC", version: "2" )
- CELO_USDT =
Asset.new( address: hex_address("48065fbBE25f71C928", "2ddf5e1cD6D6A887483D5e"), decimals: 6, chain_id: 42220, name: "Tether USD", version: "1" )
- CELO_SEPOLIA_USDC =
Asset.new( address: hex_address("01C5C0122039549AD1", "493B8220cABEdD739BC44E"), decimals: 6, chain_id: 11142220, name: "USDC", version: "2" )
Class Method Summary collapse
- .checksum(address) ⇒ Object
- .resolve(currency, authorization: nil, chain_id: nil, decimals: nil) ⇒ Object
Class Method Details
.checksum(address) ⇒ Object
86 87 88 |
# File 'lib/mpp/methods/evm/assets.rb', line 86 def checksum(address) Authorization.checksum_address(address) end |
.resolve(currency, authorization: nil, chain_id: nil, decimals: nil) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/mpp/methods/evm/assets.rb', line 59 def resolve(currency, authorization: nil, chain_id: nil, decimals: nil) if currency.is_a?(Asset) auth = () || {"name" => currency.name, "version" => currency.version} return { address: checksum(currency.address), chain_id: chain_id || currency.chain_id, decimals: decimals || currency.decimals, authorization: auth } end address = currency.to_s Kernel.raise ArgumentError, "EVM currency must be a known asset or 0x-prefixed address" unless address.match?(/\A0x[a-fA-F0-9]{40}\z/) Kernel.raise ArgumentError, "EVM authorization requires `chain_id`." if chain_id.nil? Kernel.raise ArgumentError, "EVM authorization requires `decimals`." if decimals.nil? auth = () Kernel.raise ArgumentError, "EVM authorization requires `authorization` metadata." unless auth { address: checksum(address), chain_id: Kernel.Integer(chain_id), decimals: Kernel.Integer(decimals), authorization: auth } end |