decred.org/dcrdex@v1.0.5/dex/networks/polygon/params.go (about) 1 // This code is available on the terms of the project LICENSE.md file, 2 // also available online at https://blueoakcouncil.org/license/1.0.0. 3 4 package polygon 5 6 import ( 7 "decred.org/dcrdex/dex" 8 dexeth "decred.org/dcrdex/dex/networks/eth" 9 "github.com/ethereum/go-ethereum/common" 10 ) 11 12 const ( 13 PolygonBipID = 966 14 ) 15 16 var ( 17 UnitInfo = dex.UnitInfo{ 18 AtomicUnit: "gwei", 19 Conventional: dex.Denomination{ 20 Unit: "POL", 21 ConversionFactor: 1e9, 22 }, 23 Alternatives: []dex.Denomination{ 24 { 25 Unit: "Szabos", 26 ConversionFactor: 1e6, 27 }, 28 { 29 Unit: "Finneys", 30 ConversionFactor: 1e3, 31 }, 32 }, 33 FeeRateDenom: "gas", 34 } 35 36 // First swap used 134434 gas Recommended Gases.Swap = 174764 37 // 4 additional swaps averaged 112609 gas each. Recommended Gases.SwapAdd = 146391 38 // [134434 247061 359676 472279 584870] 39 // First redeem used 60454 gas. Recommended Gases.Redeem = 78590 40 // 4 additional redeems averaged 31623 gas each. recommended Gases.RedeemAdd = 41109 41 // [60454 92095 123724 155329 186946] 42 // Average of 5 refunds: 42707. Recommended Gases.Refund = 55519 43 // [42700 42712 42712 42712 42700] 44 v0Gases = &dexeth.Gases{ 45 Swap: 174_000, // 134_482 https://polygonscan.com/tx/0xd568d6c832d0a96dee25212e7b08643ba395459b5b0df20d99463ec0fbca575f 46 SwapAdd: 146_000, 47 Redeem: 78_000, // 60_466 https://polygonscan.com/tx/0xf671574a711b4bc31daa1431dcf029818d6b5eb2276f4205ff17f58b66d85605 48 RedeemAdd: 41_000, 49 Refund: 55_000, 50 } 51 52 VersionedGases = map[uint32]*dexeth.Gases{ 53 0: v0Gases, 54 } 55 56 ContractAddresses = map[uint32]map[dex.Network]common.Address{ 57 0: { 58 dex.Mainnet: common.HexToAddress("0xd45e648D97Beb2ee0045E5e91d1C2C751Cd0Bc00"), // txid: 0xbb7d09fb3832b35fbbed641453a90f217a2736cf1419848887dfee2dbb14187e 59 dex.Testnet: common.HexToAddress("0x73bc803A2604b2c58B8680c3CE1b14489842EF16"), // txid: 0x88f656a8e432fdd50f33e67bdc39a66d24f663e33792bfab16b033dd2c609a99 60 dex.Simnet: common.HexToAddress(""), // Filled in by MaybeReadSimnetAddrs 61 }, 62 } 63 64 MultiBalanceAddresses = map[dex.Network]common.Address{ 65 dex.Mainnet: common.HexToAddress("0x23d8203d8E3c839F359bcC85BFB71cf0d707EDF0"), // tx: 0xc593222106c700b153977fdf290f8d9656610cd2dd88522724e85b3f7fd600cf 66 dex.Testnet: common.HexToAddress("0xa958d5B8a3a29E3f5f41742Fbb939A0dd93EB418"), // tx 0x692cf15b145cb45c0098bedf8a55d067b1ac994973bb62000c046b8453d8b624 67 } 68 69 usdcTokenID, _ = dex.BipSymbolID("usdc.polygon") 70 usdtTokenID, _ = dex.BipSymbolID("usdt.polygon") 71 wethTokenID, _ = dex.BipSymbolID("weth.polygon") 72 wbtcTokenID, _ = dex.BipSymbolID("wbtc.polygon") 73 74 Tokens = map[uint32]*dexeth.Token{ 75 usdcTokenID: TokenUSDC, 76 usdtTokenID: TokenUSDT, 77 wethTokenID: TokenWETH, 78 wbtcTokenID: TokenWBTC, 79 } 80 81 TokenUSDC = &dexeth.Token{ 82 EVMFactor: new(int64), 83 Token: &dex.Token{ 84 ParentID: PolygonBipID, 85 Name: "USDC", 86 UnitInfo: dex.UnitInfo{ 87 AtomicUnit: "µUSD", 88 Conventional: dex.Denomination{ 89 Unit: "USDC", 90 ConversionFactor: 1e6, 91 }, 92 Alternatives: []dex.Denomination{ 93 { 94 Unit: "cents", 95 ConversionFactor: 1e2, 96 }, 97 }, 98 FeeRateDenom: "gas", 99 }, 100 }, 101 NetTokens: map[dex.Network]*dexeth.NetToken{ 102 dex.Mainnet: { 103 Address: common.HexToAddress("0x3c499c542cef5e3811e1192ce70d8cc03d5c3359"), // https://polygonscan.com/address/0x3c499c542cef5e3811e1192ce70d8cc03d5c3359 104 SwapContracts: map[uint32]*dexeth.SwapContract{ 105 0: { 106 // deploy tx: https://polygonscan.com/tx/0x6e8b2a7f1f81ff8c4638937ff1f75474211b5e6c7418899f6c935ad823cdbdca 107 // swap contract: https://polygonscan.com/address/0x1C152f7f91E03BcA4B0000Be9f694A62A9548e7B 108 Address: common.HexToAddress("0x1C152f7f91E03BcA4B0000Be9f694A62A9548e7B"), 109 Gas: dexeth.Gases{ 110 // First swap used 187856 gas Recommended Gases.Swap = 244212 111 // 2 additional swaps averaged 112591 gas each. Recommended Gases.SwapAdd = 146368 112 // [187856 300435 413038] 113 Swap: 244_212, 114 SwapAdd: 146_368, 115 // First redeem used 79024 gas. Recommended Gases.Redeem = 102731 116 // 2 additional redeems averaged 31623 gas each. recommended Gases.RedeemAdd = 41109 117 // [79024 110641 142270] 118 Redeem: 102_731, 119 RedeemAdd: 41_109, 120 // Average of 3 refunds: 64298. Recommended Gases.Refund = 83587 121 // [64302 64290 64302] 122 Refund: 83_587, 123 // Average of 2 approvals: 60166. Recommended Gases.Approve = 78215 124 // [60166 60166] 125 Approve: 78_215, 126 // Average of 1 transfers: 65500. Recommended Gases.Transfer = 85150 127 // [65500] 128 Transfer: 85_150, 129 }, 130 }, 131 }, 132 }, 133 dex.Testnet: { 134 Address: common.HexToAddress("0x41E94Eb019C0762f9Bfcf9Fb1E58725BfB0e7582"), // https://amoy.polygonscan.com/address/0x41E94Eb019C0762f9Bfcf9Fb1E58725BfB0e7582#readContract 135 SwapContracts: map[uint32]*dexeth.SwapContract{ 136 0: { 137 // deploy tx: https://amoy.polygonscan.com/tx/0x61315c5cf90fdf2cd4a89d04cce6496c9ee7a2ecc18dbc5f76e4baacc80bda5e 138 // swap contract: https://amoy.polygonscan.com/address/0xca70D818ffff2Cd235Ab90b4fec3e6394014D294 139 Address: common.HexToAddress("0xca70D818ffff2Cd235Ab90b4fec3e6394014D294"), 140 Gas: dexeth.Gases{ 141 // First swap used 187982 gas Recommended Gases.Swap = 244376 142 // 4 additional swaps averaged 112591 gas each. Recommended Gases.SwapAdd = 146368 143 // [187982 300573 413152 525755 638346] 144 Swap: 244_376, 145 SwapAdd: 146_368, 146 // First redeem used 77229 gas. Recommended Gases.Redeem = 100397 147 // 4 additional redeems averaged 31629 gas each. recommended Gases.RedeemAdd = 41117 148 // [77229 108858 140475 172105 203746] 149 Redeem: 100_397, 150 RedeemAdd: 41_117, 151 // Average of 5 refunds: 69660. Recommended Gases.Refund = 90558 152 // [69663 69663 69651 69663 69663] 153 Refund: 90_558, // On Amaoy recommended was actually 79067 154 // Average of 2 approvals: 58634. Recommended Gases.Approve = 76224 155 // [58634 58634] 156 Approve: 76_224, 157 // Average of 1 transfers: 63705. Recommended Gases.Transfer = 82816 158 // [63705] 159 Transfer: 82_816, 160 }, 161 }, 162 }, 163 }, 164 dex.Simnet: { 165 Address: common.Address{}, 166 SwapContracts: map[uint32]*dexeth.SwapContract{ 167 0: { 168 Address: common.Address{}, // Set in MaybeReadSimnetAddrs 169 Gas: dexeth.Gases{ 170 Swap: 223_163, 171 SwapAdd: 146_399, 172 Redeem: 82_121, 173 RedeemAdd: 41_113, 174 Refund: 62_527, 175 Approve: 58_180, 176 Transfer: 64_539, 177 }, 178 }, 179 }, 180 }, 181 }, 182 } 183 184 TokenUSDT = &dexeth.Token{ 185 EVMFactor: new(int64), 186 Token: &dex.Token{ 187 ParentID: PolygonBipID, 188 Name: "Tether", 189 UnitInfo: dex.UnitInfo{ 190 AtomicUnit: "microUSD", 191 Conventional: dex.Denomination{ 192 Unit: "USDT", 193 ConversionFactor: 1e6, 194 }, 195 }, 196 }, 197 NetTokens: map[dex.Network]*dexeth.NetToken{ 198 dex.Mainnet: { 199 Address: common.HexToAddress("0xc2132D05D31c914a87C6611C10748AEb04B58e8F"), // https://polygonscan.com/address/0xc2132D05D31c914a87C6611C10748AEb04B58e8F 200 SwapContracts: map[uint32]*dexeth.SwapContract{ 201 0: { 202 // swap contract: https://polygonscan.com/address/0x97a53fEF7854f4CB846F2eaCCf847229F1E10e4f 203 Address: common.HexToAddress("0x97a53fEF7854f4CB846F2eaCCf847229F1E10e4f"), 204 // Results from client's GetGasEstimates. 205 // 206 // First swap used 181278 gas Recommended Gases.Swap = 235661 207 // 4 additional swaps averaged 112591 gas each. Recommended Gases.SwapAdd = 146368 208 // [181278 293869 406448 519051 631642] 209 // First redeem used 70794 gas. Recommended Gases.Redeem = 92032 210 // 4 additional redeems averaged 31629 gas each. recommended Gases.RedeemAdd = 41117 211 // [70794 102411 134028 165670 197311] 212 // Average of 5 refunds: 63123. Recommended Gases.Refund = 82059 213 // [63126 63126 63114 63126 63126] 214 // Average of 2 approvals: 52072. Recommended Gases.Approve = 67693 215 // [52072 52072] 216 // Average of 1 transfers: 57270. Recommended Gases.Transfer = 74451 217 // [57270] 218 Gas: dexeth.Gases{ 219 Swap: 235_661, 220 SwapAdd: 146_368, 221 Redeem: 122_032, 222 RedeemAdd: 61_117, 223 Refund: 82_059, 224 Approve: 67_693, 225 Transfer: 74_451, 226 }, 227 }, 228 }, 229 }, 230 dex.Simnet: { 231 Address: common.Address{}, 232 SwapContracts: map[uint32]*dexeth.SwapContract{ 233 0: { 234 Address: common.Address{}, // Set in MaybeReadSimnetAddrs 235 Gas: dexeth.Gases{ 236 Swap: 223_163, 237 SwapAdd: 146_399, 238 Redeem: 82_121, 239 RedeemAdd: 41_113, 240 Refund: 62_527, 241 Approve: 58_180, 242 Transfer: 64_539, 243 }, 244 }, 245 }, 246 }, 247 }, 248 } 249 250 // TokenWETH is for Wrapped ETH. 251 TokenWETH = &dexeth.Token{ 252 Token: &dex.Token{ 253 ParentID: PolygonBipID, 254 Name: "Wrapped Ether", 255 UnitInfo: dex.UnitInfo{ 256 AtomicUnit: "gwei", 257 Conventional: dex.Denomination{ 258 Unit: "WETH", 259 ConversionFactor: 1e9, 260 }, 261 Alternatives: []dex.Denomination{ 262 { 263 Unit: "Szabos", 264 ConversionFactor: 1e6, 265 }, 266 { 267 Unit: "Finneys", 268 ConversionFactor: 1e3, 269 }, 270 }, 271 FeeRateDenom: "gas", 272 }, 273 }, 274 NetTokens: map[dex.Network]*dexeth.NetToken{ 275 dex.Mainnet: { 276 Address: common.HexToAddress("0x7ceb23fd6bc0add59e62ac25578270cff1b9f619"), // https://polygonscan.com/token/0x7ceb23fd6bc0add59e62ac25578270cff1b9f619 277 SwapContracts: map[uint32]*dexeth.SwapContract{ 278 0: { 279 // deploy tx: https://polygonscan.com/tx/0xc569774add0a9f41eace3ff6289eafd4c17fbcaafcf8b7758e0a5c4d74dcf307 280 // swap contract: https://polygonscan.com/address/0x878dF60d47Afa9C665dFaDCB6BF4e303C080032f 281 Address: common.HexToAddress("0x878dF60d47Afa9C665dFaDCB6BF4e303C080032f"), 282 Gas: dexeth.Gases{ 283 // First swap used 158846 gas Recommended Gases.Swap = 206499 284 // 4 additional swaps averaged 112618 gas each. Recommended Gases.SwapAdd = 146403 285 // [158846 271461 384064 496691 609318] 286 Swap: 206_499, 287 SwapAdd: 146_403, 288 // First redeem used 70222 gas. Recommended Gases.Redeem = 91288 289 // 4 additional redeems averaged 31629 gas each. recommended Gases.RedeemAdd = 41117 290 // [70222 101851 133468 165110 196739] 291 // Observed an 87,334 in the wild, so bumping this 292 // a bit. 293 Redeem: 104_800, 294 RedeemAdd: 41_117, 295 // Average of 5 refunds: 50354. Recommended Gases.Refund = 65460 296 // [50350 50362 50338 50362 50362] 297 Refund: 65_460, 298 // [46712 26812] 299 Approve: 56_054, 300 // Average of 1 transfers: 51910. Recommended Gases.Transfer = 67483 301 // [51910] 302 Transfer: 67_483, 303 }, 304 }, 305 }, 306 }, 307 }, 308 } 309 310 // TokenWBTC is for Wrapped BTC. 311 TokenWBTC = &dexeth.Token{ 312 EVMFactor: new(int64), 313 Token: &dex.Token{ 314 ParentID: PolygonBipID, 315 Name: "Wrapped Bitcoin", 316 UnitInfo: dex.UnitInfo{ 317 AtomicUnit: "Sats", 318 Conventional: dex.Denomination{ 319 Unit: "WBTC", 320 ConversionFactor: 1e8, 321 }, 322 Alternatives: []dex.Denomination{ 323 { 324 Unit: "mWBTC", 325 ConversionFactor: 1e5, 326 }, 327 { 328 Unit: "µWBTC", 329 ConversionFactor: 1e2, 330 }, 331 }, 332 FeeRateDenom: "gas", 333 }, 334 }, 335 NetTokens: map[dex.Network]*dexeth.NetToken{ 336 dex.Mainnet: { 337 Address: common.HexToAddress("0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6"), // https://polygonscan.com/token/0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6 338 SwapContracts: map[uint32]*dexeth.SwapContract{ 339 0: { 340 // deploy tx: https://polygonscan.com/tx/0xcd84a1fa2f890d5fc1fcb0dde6c5a3bb50d9b25927ec5666b96b5ad3d6902b0a 341 // swap contract: https://polygonscan.com/address/0x625B7Ecd21B25b0808c4221dA281CD3A82f8b797 342 Address: common.HexToAddress("0x625B7Ecd21B25b0808c4221dA281CD3A82f8b797"), 343 Gas: dexeth.Gases{ 344 // First swap used 181278 gas Recommended Gases.Swap = 235661 345 // 4 additional swaps averaged 112591 gas each. Recommended Gases.SwapAdd = 146368 346 // [181278 293857 406460 519039 631642] 347 Swap: 235_661, 348 SwapAdd: 146_368, 349 // First redeem used 70794 gas. Recommended Gases.Redeem = 92032 350 // 4 additional redeems averaged 31629 gas each. recommended Gases.RedeemAdd = 41117 351 // [70794 102399 134052 165646 197311] 352 // Values around 92k were observed in the wild, so 353 // this limit has been bumped up from the 354 // recommendation. 355 Redeem: 110_032, 356 RedeemAdd: 41_117, 357 // Average of 5 refunds: 63126. Recommended Gases.Refund = 82063 358 // [63126 63126 63126 63126 63126] 359 Refund: 82_063, 360 // Average of 2 approvals: 52072. Recommended Gases.Approve = 67693 361 // [52072 52072] 362 Approve: 67_693, 363 // Average of 1 transfers: 57270. Recommended Gases.Transfer = 74451 364 // [57270] 365 Transfer: 74_451, 366 }, 367 }, 368 }, 369 }, 370 }, 371 } 372 ) 373 374 // MaybeReadSimnetAddrs attempts to read the info files generated by the eth 375 // simnet harness to populate swap contract and token addresses in 376 // ContractAddresses and Tokens. 377 func MaybeReadSimnetAddrs() { 378 dexeth.MaybeReadSimnetAddrsDir("polygon", ContractAddresses, MultiBalanceAddresses, Tokens[usdcTokenID].NetTokens[dex.Simnet], Tokens[usdtTokenID].NetTokens[dex.Simnet]) 379 }