From 16ac0df7f004fb3827d8d8859106ec57549d960b Mon Sep 17 00:00:00 2001 From: The MMGen Project Date: Tue, 29 Sep 2026 09:23:31 +0000 Subject: [PATCH] swap_asset_data: add `decimals` field --- mmgen/swap/asset.py | 6 ++- mmgen/swap/proto/thorchain/asset.py | 46 +++++++++---------- .../mmgen/swap/proto/thorchain/asset.py | 6 +-- 3 files changed, 31 insertions(+), 27 deletions(-) diff --git a/mmgen/swap/asset.py b/mmgen/swap/asset.py index 1cce74d3..d1ff5d02 100755 --- a/mmgen/swap/asset.py +++ b/mmgen/swap/asset.py @@ -18,7 +18,7 @@ from ..util import die class SwapAsset: - _ad = namedtuple('swap_asset_data', ['desc', 'name', 'full_name', 'abbr', 'tested']) + _ad = namedtuple('swap_asset_data', ['desc', 'name', 'full_name', 'abbr', 'decimals', 'tested']) assets_data = {} evm_contracts = {} unsupported = () @@ -87,6 +87,10 @@ class SwapAsset: def tokensym(self): return None if self.data.name else self.data.full_name.split('.', 1)[1] + @property + def decimals(self): + return self.data.decimals + @property def memo_asset_name(self): return self.data.abbr or self.data.full_name diff --git a/mmgen/swap/proto/thorchain/asset.py b/mmgen/swap/proto/thorchain/asset.py index de866377..afc96d17 100755 --- a/mmgen/swap/proto/thorchain/asset.py +++ b/mmgen/swap/proto/thorchain/asset.py @@ -18,29 +18,29 @@ class THORChainSwapAsset(SwapAsset): _ad = SwapAsset._ad assets_data = { - 'BTC': _ad('Bitcoin', 'BTC', None, 'b', True), - 'LTC': _ad('Litecoin', 'LTC', None, 'l', True), - 'BCH': _ad('Bitcoin Cash', 'BCH', None, 'c', True), - 'ETH': _ad('Ethereum', 'ETH', None, 'e', True), - 'DOGE': _ad('Dogecoin', 'DOGE', None, 'd', False), - 'RUNE': _ad('Rune (THORChain)', 'RUNE', 'THOR.RUNE', 'r', True), - 'ETH.AAVE': _ad('Aave (ETH)', None, 'ETH.AAVE', None, True), - 'ETH.DAI': _ad('MakerDAO USD (ETH)', None, 'ETH.DAI', None, True), - 'ETH.DPI': _ad('DeFi Pulse Index (ETH)', None, 'ETH.DPI', None, True), - 'ETH.FOX': _ad('ShapeShift FOX (ETH)', None, 'ETH.FOX', None, True), - 'ETH.GUSD': _ad('Gemini Dollar (ETH)', None, 'ETH.GUSD', None, True), - 'ETH.LINK': _ad('Chainlink (ETH)', None, 'ETH.LINK', None, True), - 'ETH.LUSD': _ad('Liquity USD (ETH)', None, 'ETH.LUSD', None, True), - 'ETH.SNX': _ad('Synthetix (ETH)', None, 'ETH.SNX', None, True), - 'ETH.TGT': _ad('THORWallet (ETH)', None, 'ETH.TGT', None, True), - 'ETH.THOR': _ad('THORSwap (ETH)', None, 'ETH.THOR', None, True), - 'ETH.USDC': _ad('USDC (ETH)', None, 'ETH.USDC', None, True), - 'ETH.USDP': _ad('Pax Dollar (ETH)', None, 'ETH.USDP', None, True), - 'ETH.USDT': _ad('Tether (ETH)', None, 'ETH.USDT', None, True), - 'ETH.vTHOR': _ad('THORSwap Staking (ETH)', None, 'ETH.vTHOR', None, True), - 'ETH.WBTC': _ad('Wrapped BTC (ETH)', None, 'ETH.WBTC', None, True), - 'ETH.XRUNE': _ad('Thorstarter (ETH)', None, 'ETH.XRUNE', None, True), - 'ETH.YFI': _ad('yearn.finance (ETH)', None, 'ETH.YFI', None, True)} + 'BTC': _ad('Bitcoin', 'BTC', None, 'b', None, True), + 'LTC': _ad('Litecoin', 'LTC', None, 'l', None, True), + 'BCH': _ad('Bitcoin Cash', 'BCH', None, 'c', None, True), + 'ETH': _ad('Ethereum', 'ETH', None, 'e', None, True), + 'DOGE': _ad('Dogecoin', 'DOGE', None, 'd', None, False), + 'RUNE': _ad('Rune (THORChain)', 'RUNE', 'THOR.RUNE', 'r', None, True), + 'ETH.AAVE': _ad('Aave (ETH)', None, 'ETH.AAVE', None, 18, True), + 'ETH.DAI': _ad('MakerDAO USD (ETH)', None, 'ETH.DAI', None, 18, True), + 'ETH.DPI': _ad('DeFi Pulse Index (ETH)', None, 'ETH.DPI', None, 18, True), + 'ETH.FOX': _ad('ShapeShift FOX (ETH)', None, 'ETH.FOX', None, 18, True), + 'ETH.GUSD': _ad('Gemini Dollar (ETH)', None, 'ETH.GUSD', None, 2, True), + 'ETH.LINK': _ad('Chainlink (ETH)', None, 'ETH.LINK', None, 18, True), + 'ETH.LUSD': _ad('Liquity USD (ETH)', None, 'ETH.LUSD', None, 18, True), + 'ETH.SNX': _ad('Synthetix (ETH)', None, 'ETH.SNX', None, 18, True), + 'ETH.TGT': _ad('THORWallet (ETH)', None, 'ETH.TGT', None, 18, True), + 'ETH.THOR': _ad('THORSwap (ETH)', None, 'ETH.THOR', None, 18, True), + 'ETH.USDC': _ad('USDC (ETH)', None, 'ETH.USDC', None, 6, True), + 'ETH.USDP': _ad('Pax Dollar (ETH)', None, 'ETH.USDP', None, 18, True), + 'ETH.USDT': _ad('Tether (ETH)', None, 'ETH.USDT', None, 6, True), + 'ETH.vTHOR': _ad('THORSwap Staking (ETH)', None, 'ETH.vTHOR', None, 18, True), + 'ETH.WBTC': _ad('Wrapped BTC (ETH)', None, 'ETH.WBTC', None, 8, True), + 'ETH.XRUNE': _ad('Thorstarter (ETH)', None, 'ETH.XRUNE', None, 18, True), + 'ETH.YFI': _ad('yearn.finance (ETH)', None, 'ETH.YFI', None, 18, True)} evm_contracts = { 'ETH.AAVE': '7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9', diff --git a/test/overlay/fakemods/mmgen/swap/proto/thorchain/asset.py b/test/overlay/fakemods/mmgen/swap/proto/thorchain/asset.py index 39cdd0a7..f505f748 100644 --- a/test/overlay/fakemods/mmgen/swap/proto/thorchain/asset.py +++ b/test/overlay/fakemods/mmgen/swap/proto/thorchain/asset.py @@ -3,9 +3,9 @@ from .asset_orig import * class overlay_fake_THORChainSwapAsset: assets_data = { - 'ETH.MM1': THORChainSwapAsset._ad('MM1 Token (ETH)', None, 'ETH.MM1', None, True), - 'ETH.JUNK': THORChainSwapAsset._ad('Junk Token (ETH)', None, 'ETH.JUNK', None, True), - 'ETH.NONE': THORChainSwapAsset._ad('Unavailable Token (ETH)', None, 'ETH.NONE', None, True)} + 'ETH.MM1': THORChainSwapAsset._ad('MM1 Token (ETH)', None, 'ETH.MM1', None, 18, True), + 'ETH.JUNK': THORChainSwapAsset._ad('Junk Token (ETH)', None, 'ETH.JUNK', None, 6, True), + 'ETH.NONE': THORChainSwapAsset._ad('Unavailable Token (ETH)', None, 'ETH.NONE', None, 18, True)} evm_contracts = { 'ETH.MM1': 'deadbeefdeadbeefdeadbeefdeadbeefdeadbeef'}