diff --git a/src/factory/TokenFactory.sol b/src/factory/TokenFactory.sol new file mode 100644 index 0000000..0cf6d0c --- /dev/null +++ b/src/factory/TokenFactory.sol @@ -0,0 +1,44 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import { LibCreate } from "./LibCreate.sol"; + +library TokenFactory { + function createAXS() internal returns (address) { + return LibCreate.createViaCreationCode(AXS_CREATION_BYTECODE); + } + + function createSLP(uint256 dailyPoitionLimit) internal returns (address) { + return LibCreate.createWithConstructorArguments(SLP_CREATION_BYTECODE, abi.encode(dailyPoitionLimit)); + } + + function createUSDC() internal returns (address) { + address implementation = LibCreate.createViaCreationCode(USDC_IMPLEMENTATION_CREATION_BYTECODE); + address proxy = LibCreate.createWithConstructorArguments(USDC_PROXY_CREATION_BYTECODE, abi.encode(implementation)); + + (bool ok,) = proxy.call(abi.encodeWithSignature("initialize()")); + require(ok, "[USDC Deploy] failed to initialize"); + + return proxy; + } + + function createWETH() internal returns (address) { + return LibCreate.createViaCreationCode(WETH_CREATION_BYTECODE); + } + + // https://app.roninchain.com/tx/0xbba5b70aaade2b3da2bfaf8ca05acb594700aff025091b8fad250c73850283bb + bytes internal constant AXS_CREATION_BYTECODE = + hex"60806040523480156200001157600080fd5b50604080518082018252601381527f4178696520496e66696e6974792053686172640000000000000000000000000060208083019190915282518084018452600381526241585360e81b91810191909152600080546001600160a01b031916331780825593516adf56b9541c229fce000000946012926001600160a01b0391909116917f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f908290a38251620000ce90600890602086019062000104565b508151620000e490600990602085019062000104565b50600a805460ff191660ff929092169190911790555050600b55620001a9565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200014757805160ff191683800117855562000177565b8280016001018555821562000177579182015b82811115620001775782518255916020019190600101906200015a565b506200018592915062000189565b5090565b620001a691905b8082111562000185576000815560010162000190565b90565b61134380620001b96000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806371e2a657116100f95780639a59042711610097578063aa271e1a11610071578063aa271e1a146105e9578063d936547e1461060f578063dd62ed3e14610635578063f851a44014610663576101a9565b80639a590427146105715780639b19251a14610597578063a9059cbb146105bd576101a9565b80638623ec7b116100d35780638623ec7b146105025780638f2839701461053b57806395d89b41146105615780639a202d4714610569576101a9565b806371e2a6571461042b57806379cc6790146104ce5780638456cb59146104fa576101a9565b80633f4ba83a116101665780635c975abb116101405780635c975abb146103525780635fc1964f1461035a5780636de23a16146103fd57806370a0823114610405576101a9565b80633f4ba83a146102ff57806340c10f191461030957806342966c6814610335576101a9565b806306fdde03146101ae578063095ea7b31461022b57806318160ddd1461026b57806323b872dd14610285578063313ce567146102bb5780633dd08c38146102d9575b600080fd5b6101b661066b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f05781810151838201526020016101d8565b50505050905090810190601f16801561021d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102576004803603604081101561024157600080fd5b506001600160a01b0381351690602001356106f9565b604080519115158252519081900360200190f35b61027361071f565b60408051918252519081900360200190f35b6102576004803603606081101561029b57600080fd5b506001600160a01b03813581169160208101359091169060400135610725565b6102c361074b565b6040805160ff9092168252519081900360200190f35b610257600480360360208110156102ef57600080fd5b50356001600160a01b0316610754565b610307610769565b005b6102576004803603604081101561031f57600080fd5b506001600160a01b0381351690602001356107c4565b6102576004803603602081101561034b57600080fd5b50356107f3565b610257610815565b6103076004803603602081101561037057600080fd5b81019060208101813564010000000081111561038b57600080fd5b82018360208201111561039d57600080fd5b803590602001918460208302840111640100000000831117156103bf57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061081e945050505050565b6102736109cb565b6102736004803603602081101561041b57600080fd5b50356001600160a01b03166109d1565b6103076004803603602081101561044157600080fd5b81019060208101813564010000000081111561045c57600080fd5b82018360208201111561046e57600080fd5b8035906020019184602083028401116401000000008311171561049057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506109e3945050505050565b610257600480360360408110156104e457600080fd5b506001600160a01b038135169060200135610ad5565b610307610af8565b61051f6004803603602081101561051857600080fd5b5035610b57565b604080516001600160a01b039092168252519081900360200190f35b6103076004803603602081101561055157600080fd5b50356001600160a01b0316610b7e565b6101b6610c03565b610307610c5e565b6103076004803603602081101561058757600080fd5b50356001600160a01b0316610cbd565b610307600480360360208110156105ad57600080fd5b50356001600160a01b0316610d1d565b610257600480360360408110156105d357600080fd5b506001600160a01b038135169060200135610d80565b610257600480360360208110156105ff57600080fd5b50356001600160a01b0316610d9d565b6102576004803603602081101561062557600080fd5b50356001600160a01b0316610dbb565b6102736004803603604081101561064b57600080fd5b506001600160a01b0381358116916020013516610dd0565b61051f610e26565b6008805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106f15780601f106106c6576101008083540402835291602001916106f1565b820191906000526020600020905b8154815290600101906020018083116106d457829003601f168201915b505050505081565b60045460009060ff161561070c57600080fd5b6107168383610e35565b90505b92915050565b60055481565b60045460009060ff161561073857600080fd5b610743848484610e9b565b949350505050565b600a5460ff1681565b60026020526000908152604090205460ff1681565b6000546001600160a01b0316331461078057600080fd5b60045460ff1661078f57600080fd5b6004805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b6000600b546107de83600554610fd990919063ffffffff16565b11156107e957600080fd5b6107168383610fe9565b600b54600090610809908363ffffffff61100f16565b600b5561071982611024565b60045460ff1681565b6000546001600160a01b0316331461083557600080fd5b6000805b82518110156108ce5782818151811061084e57fe5b6020908102919091018101516001600160a01b0381166000908152600290925260409091205490925060ff16156108c6576001600160a01b038216600081815260026020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a25b600101610839565b5060005b6001548110156109c657600181815481106108e957fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091205490925060ff166109bd5760018054600019810190811061092a57fe5b600091825260209091200154600180546001600160a01b03909216918390811061095057fe5b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905560018054600019810190811061098b57fe5b600091825260209091200180546001600160a01b031916905560018054906109b79060001983016112ae565b506109c1565b6001015b6108d2565b505050565b600b5481565b60066020526000908152604090205481565b6000546001600160a01b031633146109fa57600080fd5b6000805b82518110156109c657828181518110610a1357fe5b6020908102919091018101516001600160a01b0381166000908152600290925260409091205490925060ff16610acd576001805480820182557fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b038516908117909155600081815260026020526040808220805460ff1916909417909355915190917f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f691a25b6001016109fe565b600b54600090610aeb908363ffffffff61100f16565b600b55610716838361109d565b6000546001600160a01b03163314610b0f57600080fd5b60045460ff1615610b1f57600080fd5b6004805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b60018181548110610b6457fe5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b03163314610b9557600080fd5b6001600160a01b038116610ba857600080fd5b600080546040516001600160a01b03808516939216917f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f91a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6009805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106f15780601f106106c6576101008083540402835291602001916106f1565b6000546001600160a01b03163314610c7557600080fd5b600080546040516001600160a01b03909116917fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f91a2600080546001600160a01b0319169055565b6000546001600160a01b03163314610cd457600080fd5b6001600160a01b038116600081815260036020526040808220805460ff19169055517f1b3787b2ded581f9fe4b6277fdd8e10f36368c08f211dbcb089a1c8940582dea9190a250565b6000546001600160a01b03163314610d3457600080fd5b6001600160a01b038116600081815260036020526040808220805460ff19166001179055517f8fa80cb4996c90aaf328c499cae29ba648e2686924355d501d9e4755fc82360a9190a250565b60045460009060ff1615610d9357600080fd5b610716838361116e565b6001600160a01b031660009081526002602052604090205460ff1690565b60036020526000908152604090205460ff1681565b6001600160a01b03811660009081526003602052604081205460ff1615610dfa5750600019610719565b506001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b6000546001600160a01b031681565b3360008181526007602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60006001600160a01b038316610eb057600080fd5b6001600160a01b038416600090815260066020526040902054610ed9908363ffffffff61100f16565b6001600160a01b038086166000908152600660205260408082209390935590851681522054610f0e908363ffffffff610fd916565b6001600160a01b03841660009081526006602090815260408083209390935533825260039052205460ff16610f96576001600160a01b0384166000908152600760209081526040808320338452909152902054610f71908363ffffffff61100f16565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b826001600160a01b0316846001600160a01b03166000805160206112ef833981519152846040518082815260200191505060405180910390a35060019392505050565b8181018281101561071957600080fd5b3360009081526002602052604081205460ff1661100557600080fd5b6107168383611221565b60008282111561101e57600080fd5b50900390565b60055460009061103a908363ffffffff61100f16565b6005553360009081526006602052604090205461105d908363ffffffff61100f16565b336000818152600660209081526040808320949094558351868152935191936000805160206112ef833981519152929081900390910190a3506001919050565b6005546000906110b3908363ffffffff61100f16565b6005556001600160a01b0383166000908152600660205260409020546110df908363ffffffff61100f16565b6001600160a01b038416600090815260066020908152604080832093909355600781528282203383529052205461111c908363ffffffff61100f16565b6001600160a01b03841660008181526007602090815260408083203384528252808320949094558351868152935191936000805160206112ef833981519152929081900390910190a350600192915050565b60006001600160a01b03831661118357600080fd5b336000908152600660205260409020546111a3908363ffffffff61100f16565b33600090815260066020526040808220929092556001600160a01b038516815220546111d5908363ffffffff610fd916565b6001600160a01b0384166000818152600660209081526040918290209390935580518581529051919233926000805160206112ef8339815191529281900390910190a350600192915050565b600554600090611237908363ffffffff610fd916565b6005556001600160a01b038316600090815260066020526040902054611263908363ffffffff610fd916565b6001600160a01b03841660008181526006602090815260408083209490945583518681529351929391926000805160206112ef8339815191529281900390910190a350600192915050565b8154818355818111156109c6576000838152602090206109c69181019083016112eb91905b808211156112e757600081556001016112d3565b5090565b9056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa265627a7a723158205d24f0fa33a1624fe0e920c218e223485e965a2746f7833aa3fea25d29e212ea64736f6c63430005110032"; + // https://app.roninchain.com/tx/0x6873a6527df184e40978e83be9f7769e4213e50029fb94104c6b97606377991a + bytes internal constant SLP_CREATION_BYTECODE = + hex"60806040523480156200001157600080fd5b506040516200227038038062002270833981810160405260208110156200003757600080fd5b5051604080518082018252601281527129b6b7b7ba34102637bb32902837ba34b7b760711b602082810191909152825180840190935260038352620534c560ec1b83820152909190600090600019908490849084908490620000a790829060019062001e9d62000158821b17901c565b600080546001600160a01b03191633178082556040518792879287926001600160a01b039190911691907f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f908290a382516200010b906007906020860190620001a7565b50815162000121906008906020850190620001a7565b506009805460ff191660ff929092169190911790555050600a5550620001519650879550506200018a9350505050565b506200024c565b600082620001695750600062000184565b50818102818382816200017857fe5b04146200018457600080fd5b92915050565b6000546001600160a01b03163314620001a257600080fd5b600c55565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001ea57805160ff19168380011785556200021a565b828001600101855582156200021a579182015b828111156200021a578251825591602001919060010190620001fd565b50620002289291506200022c565b5090565b6200024991905b8082111562000228576000815560010162000233565b90565b612014806200025c6000396000f3fe6080604052600436106101f95760003560e01c806379cc67901161010d5780639b19251a116100a0578063d3392ddf1161006f578063d3392ddf14610a2e578063d936547e14610afb578063dd62ed3e14610b2e578063f5e5406314610b69578063f851a44014610c22576101f9565b80639b19251a146108c9578063a9059cbb146108fc578063aa271e1a14610935578063cae9ca5114610968576101f9565b80638f283970116100dc5780638f2839701461083957806395d89b411461086c5780639a202d47146108815780639a59042714610896576101f9565b806379cc6790146107905780638456cb59146107c95780638623ec7b146107de5780638aa9603514610824576101f9565b80633e53ec73116101905780635c975abb1161015f5780635c975abb146105d75780635fc1964f146105ec5780636de23a161461069a57806370a08231146106af57806371e2a657146106e2576101f9565b80633e53ec73146105135780633f4ba83a1461055f57806340c10f191461057457806342966c68146105ad576101f9565b80631f8fce9f116101cc5780631f8fce9f1461032857806323b872dd14610472578063313ce567146104b55780633dd08c38146104e0576101f9565b806306fdde03146101fe578063095ea7b31461028857806318160ddd146102d55780631b4d46b3146102fc575b600080fd5b34801561020a57600080fd5b50610213610c37565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561024d578181015183820152602001610235565b50505050905090810190601f16801561027a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561029457600080fd5b506102c1600480360360408110156102ab57600080fd5b506001600160a01b038135169060200135610cc5565b604080519115158252519081900360200190f35b3480156102e157600080fd5b506102ea610cf0565b60408051918252519081900360200190f35b34801561030857600080fd5b506103266004803603602081101561031f57600080fd5b5035610cf6565b005b6102ea600480360360c081101561033e57600080fd5b813591602081013591810190606081016040820135600160201b81111561036457600080fd5b82018360208201111561037657600080fd5b803590602001918460018302840111600160201b8311171561039757600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092956001600160a01b0385351695602086013595919450925060608101915060400135600160201b8111156103fe57600080fd5b82018360208201111561041057600080fd5b803590602001918460018302840111600160201b8311171561043157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610d12945050505050565b34801561047e57600080fd5b506102c16004803603606081101561049557600080fd5b506001600160a01b03813581169160208101359091169060400135610d4e565b3480156104c157600080fd5b506104ca610e8c565b6040805160ff9092168252519081900360200190f35b3480156104ec57600080fd5b506102c16004803603602081101561050357600080fd5b50356001600160a01b0316610e95565b34801561051f57600080fd5b506105466004803603602081101561053657600080fd5b50356001600160a01b0316610eaa565b6040805192835260208301919091528051918290030190f35b34801561056b57600080fd5b50610326610ecd565b34801561058057600080fd5b506102c16004803603604081101561059757600080fd5b506001600160a01b038135169060200135610f30565b3480156105b957600080fd5b506102c1600480360360208110156105d057600080fd5b5035610f52565b3480156105e357600080fd5b506102c1610f73565b3480156105f857600080fd5b506103266004803603602081101561060f57600080fd5b810190602081018135600160201b81111561062957600080fd5b82018360208201111561063b57600080fd5b803590602001918460208302840111600160201b8311171561065c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610f83945050505050565b3480156106a657600080fd5b506102ea611130565b3480156106bb57600080fd5b506102ea600480360360208110156106d257600080fd5b50356001600160a01b0316611136565b3480156106ee57600080fd5b506103266004803603602081101561070557600080fd5b810190602081018135600160201b81111561071f57600080fd5b82018360208201111561073157600080fd5b803590602001918460208302840111600160201b8311171561075257600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611148945050505050565b34801561079c57600080fd5b506102c1600480360360408110156107b357600080fd5b506001600160a01b03813516906020013561123a565b3480156107d557600080fd5b50610326611351565b3480156107ea57600080fd5b506108086004803603602081101561080157600080fd5b50356113bb565b604080516001600160a01b039092168252519081900360200190f35b34801561083057600080fd5b506102ea6113e2565b34801561084557600080fd5b506103266004803603602081101561085c57600080fd5b50356001600160a01b03166113e8565b34801561087857600080fd5b5061021361146d565b34801561088d57600080fd5b506103266114c8565b3480156108a257600080fd5b50610326600480360360208110156108b957600080fd5b50356001600160a01b0316611527565b3480156108d557600080fd5b50610326600480360360208110156108ec57600080fd5b50356001600160a01b0316611587565b34801561090857600080fd5b506102c16004803603604081101561091f57600080fd5b506001600160a01b0381351690602001356115ea565b34801561094157600080fd5b506102c16004803603602081101561095857600080fd5b50356001600160a01b031661160c565b34801561097457600080fd5b506102c16004803603606081101561098b57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b8111156109ba57600080fd5b8201836020820111156109cc57600080fd5b803590602001918460018302840111600160201b831117156109ed57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061162a945050505050565b348015610a3a57600080fd5b506102ea60048036036080811015610a5157600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b811115610a8757600080fd5b820183602082011115610a9957600080fd5b803590602001918460018302840111600160201b83111715610aba57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061172a945050505050565b348015610b0757600080fd5b506102c160048036036020811015610b1e57600080fd5b50356001600160a01b03166117af565b348015610b3a57600080fd5b506102ea60048036036040811015610b5157600080fd5b506001600160a01b03813581169160200135166117c4565b6102c160048036036060811015610b7f57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b811115610bae57600080fd5b820183602082011115610bc057600080fd5b803590602001918460018302840111600160201b83111715610be157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061181a945050505050565b348015610c2e57600080fd5b50610808611918565b6007805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610cbd5780601f10610c9257610100808354040283529160200191610cbd565b820191906000526020600020905b815481529060010190602001808311610ca057829003601f168201915b505050505081565b60008054600160a01b900460ff1615610cdd57600080fd5b610ce78383611927565b90505b92915050565b60045481565b6000546001600160a01b03163314610d0d57600080fd5b600c55565b60008054600160a01b900460ff1615610d2a57600080fd5b610d363388888861172a565b9050610d4384848461181a565b509695505050505050565b60006001600160a01b038316610d6357600080fd5b6001600160a01b038416600090815260056020526040902054610d8c908363ffffffff61198d16565b6001600160a01b038086166000908152600560205260408082209390935590851681522054610dc1908363ffffffff6119a216565b6001600160a01b03841660009081526005602090815260408083209390935533825260039052205460ff16610e49576001600160a01b0384166000908152600660209081526040808320338452909152902054610e24908363ffffffff61198d16565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b826001600160a01b0316846001600160a01b0316600080516020611fc0833981519152846040518082815260200191505060405180910390a35060019392505050565b60095460ff1681565b60026020526000908152604090205460ff1681565b6001600160a01b03166000908152600b6020526040902080546001909101549091565b6000546001600160a01b03163314610ee457600080fd5b600054600160a01b900460ff16610efa57600080fd5b6000805460ff60a01b191681556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d169339190a1565b60008054600160a01b900460ff1615610f4857600080fd5b610ce783836119b2565b60008054600160a01b900460ff1615610f6a57600080fd5b610cea826119e1565b600054600160a01b900460ff1681565b6000546001600160a01b03163314610f9a57600080fd5b6000805b825181101561103357828181518110610fb357fe5b6020908102919091018101516001600160a01b0381166000908152600290925260409091205490925060ff161561102b576001600160a01b038216600081815260026020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a25b600101610f9e565b5060005b60015481101561112b576001818154811061104e57fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091205490925060ff166111225760018054600019810190811061108f57fe5b600091825260209091200154600180546001600160a01b0390921691839081106110b557fe5b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790556001805460001981019081106110f057fe5b600091825260209091200180546001600160a01b0319169055600180549061111c906000198301611f52565b50611126565b6001015b611037565b505050565b600a5481565b60056020526000908152604090205481565b6000546001600160a01b0316331461115f57600080fd5b6000805b825181101561112b5782818151811061117857fe5b6020908102919091018101516001600160a01b0381166000908152600290925260409091205490925060ff16611232576001805480820182557fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b038516908117909155600081815260026020526040808220805460ff1916909417909355915190917f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f691a25b600101611163565b60008054600160a01b900460ff161561125257600080fd5b600454611265908363ffffffff61198d16565b6004556001600160a01b038316600090815260056020526040902054611291908363ffffffff61198d16565b6001600160a01b03841660009081526005602090815260408083209390935533825260039052205460ff16611319576001600160a01b03831660009081526006602090815260408083203384529091529020546112f4908363ffffffff61198d16565b6001600160a01b03841660009081526006602090815260408083203384529091529020555b6040805183815290516000916001600160a01b03861691600080516020611fc08339815191529181900360200190a350600192915050565b6000546001600160a01b0316331461136857600080fd5b600054600160a01b900460ff161561137f57600080fd5b6000805460ff60a01b1916600160a01b1781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b600181815481106113c857fe5b6000918252602090912001546001600160a01b0316905081565b600c5481565b6000546001600160a01b031633146113ff57600080fd5b6001600160a01b03811661141257600080fd5b600080546040516001600160a01b03808516939216917f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f91a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6008805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610cbd5780601f10610c9257610100808354040283529160200191610cbd565b6000546001600160a01b031633146114df57600080fd5b600080546040516001600160a01b03909116917fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f91a2600080546001600160a01b0319169055565b6000546001600160a01b0316331461153e57600080fd5b6001600160a01b038116600081815260036020526040808220805460ff19169055517f1b3787b2ded581f9fe4b6277fdd8e10f36368c08f211dbcb089a1c8940582dea9190a250565b6000546001600160a01b0316331461159e57600080fd5b6001600160a01b038116600081815260036020526040808220805460ff19166001179055517f8fa80cb4996c90aaf328c499cae29ba648e2686924355d501d9e4755fc82360a9190a250565b60008054600160a01b900460ff161561160257600080fd5b610ce78383611a03565b6001600160a01b031660009081526002602052604090205460ff1690565b60006116368484610cc5565b61163f57600080fd5b604051638f4ffcb160e01b815233600482018181526024830186905230604484018190526080606485019081528651608486015286516001600160a01b038a1695638f4ffcb195948a94938a939192909160a490910190602085019080838360005b838110156116b95781810151838201526020016116a1565b50505050905090810190601f1680156116e65780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561170857600080fd5b505af115801561171c573d6000803e3d6000fd5b506001979650505050505050565b604080516bffffffffffffffffffffffff19606087901b16602080830191909152603482018690526054808301869052835180840390910181526074909201909252805191012060009081611785828563ffffffff611ab616565b90506117908161160c565b61179957600080fd5b6117a4878787611ac4565b979650505050505050565b60036020526000908152604090205460ff1681565b6001600160a01b03811660009081526003602052604081205460ff16156117ee5750600019610cea565b506001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b60006118268484610cc5565b61182f57600080fd5b604051638f4ffcb160e01b815233600482018181526024830186905230604484018190526080606485019081528651608486015286516001600160a01b038a1695638f4ffcb195349590948b9490938b9360a40190602085019080838360005b838110156118a757818101518382015260200161188f565b50505050905090810190601f1680156118d45780820380516001836020036101000a031916815260200191505b50955050505050506000604051808303818588803b1580156118f557600080fd5b505af1158015611909573d6000803e3d6000fd5b50600198975050505050505050565b6000546001600160a01b031681565b3360008181526006602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60008282111561199c57600080fd5b50900390565b81810182811015610cea57600080fd5b6000600a546119cc836004546119a290919063ffffffff16565b11156119d757600080fd5b610ce78383611c28565b600a546000906119f7908363ffffffff61198d16565b600a55610cea82611c4e565b60006001600160a01b038316611a1857600080fd5b33600090815260056020526040902054611a38908363ffffffff61198d16565b33600090815260056020526040808220929092556001600160a01b03851681522054611a6a908363ffffffff6119a216565b6001600160a01b038416600081815260056020908152604091829020939093558051858152905191923392600080516020611fc08339815191529281900390910190a350600192915050565b6000610ce783836000611cc7565b60008054600160a01b900460ff1615611adc57600080fd5b6001600160a01b0384166000908152600b602052604081206001810154909190611b0d90859063ffffffff61198d16565b9050611b4b600062015180830611611b26576000611b29565b60015b60ff16611b3f836201518063ffffffff611e7e16565b9063ffffffff6119a216565b8254909150600090611b6490879063ffffffff61198d16565b600c54909150611b7a908363ffffffff611e9d16565b811115611bb85760405162461bcd60e51b815260040180806020018281038252602d815260200180611f93602d913960400191505060405180910390fd5b611bc28782611ec5565b508583556001830185905560405186906001600160a01b038916907fe74d4deada483a86175e3997d158999330584cf5f682afd2f4ce28b0ce9d7d0390600090a35050506001600160a01b03841660009081526005602052604090205490509392505050565b3360009081526002602052604081205460ff16611c4457600080fd5b610ce78383611ec5565b600454600090611c64908363ffffffff61198d16565b60045533600090815260056020526040902054611c87908363ffffffff61198d16565b33600081815260056020908152604080832094909455835186815293519193600080516020611fc0833981519152929081900390910190a3506001919050565b60008160420183511015611cda57600080fd5b6000838381518110611ce857fe5b016020015160f81c6002811115611cfb57fe5b848401602181015160418201516042909201519293509160ff16601b811015611d2257601b015b8060ff16601b1480611d3757508060ff16601c145b611d4057600080fd5b6001846002811115611d4e57fe5b1415611daa578760405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c01828152602001915050604051602081830303815290604052805190602001209750611e10565b6002846002811115611db857fe5b1415611e10578760405160200180807f19457468657265756d205369676e6564204d6573736167653a0a200000000000815250601b018281526020019150506040516020818303038152906040528051906020012097505b604080516000815260208082018084528b905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015611e67573d6000803e3d6000fd5b5050604051601f1901519998505050505050505050565b6000808211611e8c57600080fd5b818381611e9557fe5b049392505050565b600082611eac57506000610cea565b5081810281838281611eba57fe5b0414610cea57600080fd5b600454600090611edb908363ffffffff6119a216565b6004556001600160a01b038316600090815260056020526040902054611f07908363ffffffff6119a216565b6001600160a01b0384166000818152600560209081526040808320949094558351868152935192939192600080516020611fc08339815191529281900390910190a350600192915050565b81548183558181111561112b5760008381526020902061112b918101908301611f8f91905b80821115611f8b5760008155600101611f77565b5090565b9056fe536d6f6f74684c6f7665506f74696f6e3a20717565727920666f72206f7665722d6c696d697420616d6f756e74ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa265627a7a72315820b9e1657b1c522ae7e97b72b6f464b65e68e0bde97cce0cf00ae1b98f325b70fd64736f6c6343000511003200000000000000000000000000000000000000000000000000000000000007d0"; + // https://app.roninchain.com/tx/0xf37fb2bed69809edc7b31fd499416e75414ca35c43ba756dccb4f50df80463f1 + bytes internal constant USDC_PROXY_CREATION_BYTECODE = + hex"608060405234801561001057600080fd5b506040516020806104958339810180604052602081101561003057600080fd5b505160008054600160a060020a0319163317808255604051600160a060020a039190911691907f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f908290a361008d81640100000000610093810204565b5061010e565b600054600160a060020a031633146100aa57600080fd5b600160a060020a03811615156100bf57600080fd5b60018054600160a060020a031916600160a060020a03838116918217928390556040519216917fd32d24edea94f55e932d9a008afc425a8561462d1b1f57bc6e508e9a6b9509e190600090a350565b6103788061011d6000396000f3fe608060405260043610610071577c010000000000000000000000000000000000000000000000000000000060003504634555d5c981146100b75780635c60da1b146100de5780638f2839701461010f5780639a202d4714610144578063f851a44014610159578063fd840de21461016e575b600061007b6101a1565b9050600160a060020a038116151561009257600080fd5b60405136600082376000803683855af43d806000843e8180156100b3578184f35b8184fd5b3480156100c357600080fd5b506100cc6101b0565b60408051918252519081900360200190f35b3480156100ea57600080fd5b506100f36101a1565b60408051600160a060020a039092168252519081900360200190f35b34801561011b57600080fd5b506101426004803603602081101561013257600080fd5b5035600160a060020a03166101b5565b005b34801561015057600080fd5b50610142610249565b34801561016557600080fd5b506100f36102b5565b34801561017a57600080fd5b506101426004803603602081101561019157600080fd5b5035600160a060020a03166102c4565b600154600160a060020a031690565b600290565b600054600160a060020a031633146101cc57600080fd5b600160a060020a03811615156101e157600080fd5b60008054604051600160a060020a03808516939216917f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f91a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a0316331461026057600080fd5b60008054604051600160a060020a03909116917fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f91a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031681565b600054600160a060020a031633146102db57600080fd5b600160a060020a03811615156102f057600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03838116918217928390556040519216917fd32d24edea94f55e932d9a008afc425a8561462d1b1f57bc6e508e9a6b9509e190600090a35056fea165627a7a72305820d28a787b4d187d7d47654ebc49724e8480cf592465c0715258133bde7aee931d00290000000000000000000000005ca943fee5b6803a7b28fad6412c8c016d4d4c09"; + // https://app.roninchain.com/tx/0xd67af9e4f599c853f6311a4f61bf05a3eff271b526bdb473536e6a0d9f7f70d0 + bytes internal constant USDC_IMPLEMENTATION_CREATION_BYTECODE = + hex"60806040523480156200001157600080fd5b5060408051808201825260088152672aa9a21021b7b4b760c11b6020808301919091528251808401845260048152635553444360e01b91810191909152600080546001600160a01b03191633178082559351929391926006926001600160a01b031691907f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f908290a38251620000af906009906020860190620000e3565b508151620000c590600a906020850190620000e3565b50600b805460ff191660ff9290921691909117905550620001889050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200012657805160ff191683800117855562000156565b8280016001018555821562000156579182015b828111156200015657825182559160200191906001019062000139565b506200016492915062000168565b5090565b6200018591905b808211156200016457600081556001016200016f565b90565b6113cd80620001986000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806379cc6790116100f95780639a59042711610097578063aa271e1a11610071578063aa271e1a146105e9578063d936547e1461060f578063dd62ed3e14610635578063f851a44014610663576101a9565b80639a590427146105715780639b19251a14610597578063a9059cbb146105bd576101a9565b80638623ec7b116100d35780638623ec7b146105025780638f2839701461053b57806395d89b41146105615780639a202d4714610569576101a9565b806379cc6790146104c65780638129fc1c146104f25780638456cb59146104fa576101a9565b80633f4ba83a116101665780635c975abb116101405780635c975abb146103525780635fc1964f1461035a57806370a08231146103fd57806371e2a65714610423576101a9565b80633f4ba83a146102ff57806340c10f191461030957806342966c6814610335576101a9565b806306fdde03146101ae578063095ea7b31461022b57806318160ddd1461026b57806323b872dd14610285578063313ce567146102bb5780633dd08c38146102d9575b600080fd5b6101b661066b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f05781810151838201526020016101d8565b50505050905090810190601f16801561021d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102576004803603604081101561024157600080fd5b506001600160a01b0381351690602001356106f9565b604080519115158252519081900360200190f35b61027361071f565b60408051918252519081900360200190f35b6102576004803603606081101561029b57600080fd5b506001600160a01b03813581169160208101359091169060400135610725565b6102c361074b565b6040805160ff9092168252519081900360200190f35b610257600480360360208110156102ef57600080fd5b50356001600160a01b0316610754565b610307610769565b005b6102576004803603604081101561031f57600080fd5b506001600160a01b0381351690602001356107c4565b6102576004803603602081101561034b57600080fd5b50356107ea565b610257610863565b6103076004803603602081101561037057600080fd5b81019060208101813564010000000081111561038b57600080fd5b82018360208201111561039d57600080fd5b803590602001918460208302840111640100000000831117156103bf57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061086c945050505050565b6102736004803603602081101561041357600080fd5b50356001600160a01b0316610a19565b6103076004803603602081101561043957600080fd5b81019060208101813564010000000081111561045457600080fd5b82018360208201111561046657600080fd5b8035906020019184602083028401116401000000008311171561048857600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610a2b945050505050565b610257600480360360408110156104dc57600080fd5b506001600160a01b038135169060200135610b20565b610307610bf1565b610307610c73565b61051f6004803603602081101561051857600080fd5b5035610cd2565b604080516001600160a01b039092168252519081900360200190f35b6103076004803603602081101561055157600080fd5b50356001600160a01b0316610cf9565b6101b6610d7e565b610307610dd9565b6103076004803603602081101561058757600080fd5b50356001600160a01b0316610e38565b610307600480360360208110156105ad57600080fd5b50356001600160a01b0316610e98565b610257600480360360408110156105d357600080fd5b506001600160a01b038135169060200135610efb565b610257600480360360208110156105ff57600080fd5b50356001600160a01b0316610f18565b6102576004803603602081101561062557600080fd5b50356001600160a01b0316610f36565b6102736004803603604081101561064b57600080fd5b506001600160a01b0381358116916020013516610f4b565b61051f610fa1565b6009805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106f15780601f106106c6576101008083540402835291602001916106f1565b820191906000526020600020905b8154815290600101906020018083116106d457829003601f168201915b505050505081565b60055460009060ff161561070c57600080fd5b6107168383610fb0565b90505b92915050565b60065481565b60055460009060ff161561073857600080fd5b610743848484611016565b949350505050565b600b5460ff1681565b60036020526000908152604090205460ff1681565b6000546001600160a01b0316331461078057600080fd5b60055460ff1661078f57600080fd5b6005805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b3360009081526003602052604081205460ff166107e057600080fd5b6107168383611154565b600654600090610800908363ffffffff6111e116565b60065533600090815260076020526040902054610823908363ffffffff6111e116565b33600081815260076020908152604080832094909455835186815293519193600080516020611379833981519152929081900390910190a3506001919050565b60055460ff1681565b6000546001600160a01b0316331461088357600080fd5b6000805b825181101561091c5782818151811061089c57fe5b6020908102919091018101516001600160a01b0381166000908152600390925260409091205490925060ff1615610914576001600160a01b038216600081815260036020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a25b600101610887565b5060005b600254811015610a14576002818154811061093757fe5b60009182526020808320909101546001600160a01b0316808352600390915260409091205490925060ff16610a0b5760028054600019810190811061097857fe5b600091825260209091200154600280546001600160a01b03909216918390811061099e57fe5b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790556002805460001981019081106109d957fe5b600091825260209091200180546001600160a01b03191690556002805490610a059060001983016112b9565b50610a0f565b6001015b610920565b505050565b60076020526000908152604090205481565b6000546001600160a01b03163314610a4257600080fd5b6000805b8251811015610a1457828181518110610a5b57fe5b6020908102919091018101516001600160a01b0381166000908152600390925260409091205490925060ff16610b18576002805460018082019092557f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b038516908117909155600081815260036020526040808220805460ff1916909417909355915190917f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f691a25b600101610a46565b600654600090610b36908363ffffffff6111e116565b6006556001600160a01b038316600090815260076020526040902054610b62908363ffffffff6111e116565b6001600160a01b0384166000908152600760209081526040808320939093556008815282822033835290522054610b9f908363ffffffff6111e116565b6001600160a01b0384166000818152600860209081526040808320338452825280832094909455835186815293519193600080516020611379833981519152929081900390910190a350600192915050565b6000546001600160a01b03163314610c0857600080fd5b604080518082019091526008808252672aa9a21021b7b4b760c11b6020909201918252610c37916009916112dd565b50604080518082019091526004808252635553444360e01b6020909201918252610c6391600a916112dd565b50600b805460ff19166006179055565b6000546001600160a01b03163314610c8a57600080fd5b60055460ff1615610c9a57600080fd5b6005805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b60028181548110610cdf57fe5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b03163314610d1057600080fd5b6001600160a01b038116610d2357600080fd5b600080546040516001600160a01b03808516939216917f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f91a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600a805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106f15780601f106106c6576101008083540402835291602001916106f1565b6000546001600160a01b03163314610df057600080fd5b600080546040516001600160a01b03909116917fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f91a2600080546001600160a01b0319169055565b6000546001600160a01b03163314610e4f57600080fd5b6001600160a01b038116600081815260046020526040808220805460ff19169055517f1b3787b2ded581f9fe4b6277fdd8e10f36368c08f211dbcb089a1c8940582dea9190a250565b6000546001600160a01b03163314610eaf57600080fd5b6001600160a01b038116600081815260046020526040808220805460ff19166001179055517f8fa80cb4996c90aaf328c499cae29ba648e2686924355d501d9e4755fc82360a9190a250565b60055460009060ff1615610f0e57600080fd5b61071683836111f6565b6001600160a01b031660009081526003602052604090205460ff1690565b60046020526000908152604090205460ff1681565b6001600160a01b03811660009081526004602052604081205460ff1615610f755750600019610719565b506001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6000546001600160a01b031681565b3360008181526008602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60006001600160a01b03831661102b57600080fd5b6001600160a01b038416600090815260076020526040902054611054908363ffffffff6111e116565b6001600160a01b038086166000908152600760205260408082209390935590851681522054611089908363ffffffff6112a916565b6001600160a01b03841660009081526007602090815260408083209390935533825260049052205460ff16611111576001600160a01b03841660009081526008602090815260408083203384529091529020546110ec908363ffffffff6111e116565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b826001600160a01b0316846001600160a01b0316600080516020611379833981519152846040518082815260200191505060405180910390a35060019392505050565b60065460009061116a908363ffffffff6112a916565b6006556001600160a01b038316600090815260076020526040902054611196908363ffffffff6112a916565b6001600160a01b03841660008181526007602090815260408083209490945583518681529351929391926000805160206113798339815191529281900390910190a350600192915050565b6000828211156111f057600080fd5b50900390565b60006001600160a01b03831661120b57600080fd5b3360009081526007602052604090205461122b908363ffffffff6111e116565b33600090815260076020526040808220929092556001600160a01b0385168152205461125d908363ffffffff6112a916565b6001600160a01b0384166000818152600760209081526040918290209390935580518581529051919233926000805160206113798339815191529281900390910190a350600192915050565b8181018281101561071957600080fd5b815481835581811115610a1457600083815260209020610a1491810190830161135b565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061131e57805160ff191683800117855561134b565b8280016001018555821561134b579182015b8281111561134b578251825591602001919060010190611330565b5061135792915061135b565b5090565b61137591905b808211156113575760008155600101611361565b9056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa265627a7a7231582053bf6beb41af8390d4d42190d046805f388de31683698005bd4803978db76e9264736f6c63430005110032"; + // https://app.roninchain.com/tx/0xd7b1ca74f192c09a005f7cd23b313f2ec38dec3ea621044307097b8e57f684ec + bytes internal constant WETH_CREATION_BYTECODE = + hex"60806040523480156200001157600080fd5b50604080518082018252601381527f526f6e696e2057726170706564204574686572000000000000000000000000006020808301919091528251808401845260048152630ae8aa8960e31b91810191909152600080546001600160a01b03191633178082559351929391926012926001600160a01b031691907f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f908290a38251620000c4906007906020860190620000f8565b508151620000da906008906020850190620000f8565b506009805460ff191660ff92909216919091179055506200019d9050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200013b57805160ff19168380011785556200016b565b828001600101855582156200016b579182015b828111156200016b5782518255916020019190600101906200014e565b50620001799291506200017d565b5090565b6200019a91905b8082111562000179576000815560010162000184565b90565b61142980620001ad6000396000f3fe6080604052600436106101405760003560e01c80638f283970116100b6578063aa271e1a1161006f578063aa271e1a146105f0578063cae9ca5114610623578063d936547e146106e9578063dd62ed3e1461071c578063f5e5406314610757578063f851a4401461081057610140565b80638f283970146104f457806395d89b41146105275780639a202d471461053c5780639a590427146105515780639b19251a14610584578063a9059cbb146105b757610140565b80633dd08c38116101085780633dd08c38146102b157806340c10f19146102e45780635fc1964f1461031d57806370a08231146103cd57806371e2a657146104005780638623ec7b146104ae57610140565b806306fdde0314610145578063095ea7b3146101cf57806318160ddd1461021c57806323b872dd14610243578063313ce56714610286575b600080fd5b34801561015157600080fd5b5061015a610825565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561019457818101518382015260200161017c565b50505050905090810190601f1680156101c15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101db57600080fd5b50610208600480360360408110156101f257600080fd5b506001600160a01b0381351690602001356108b3565b604080519115158252519081900360200190f35b34801561022857600080fd5b5061023161091a565b60408051918252519081900360200190f35b34801561024f57600080fd5b506102086004803603606081101561026657600080fd5b506001600160a01b03813581169160208101359091169060400135610920565b34801561029257600080fd5b5061029b610a70565b6040805160ff9092168252519081900360200190f35b3480156102bd57600080fd5b50610208600480360360208110156102d457600080fd5b50356001600160a01b0316610a79565b3480156102f057600080fd5b506102086004803603604081101561030757600080fd5b506001600160a01b038135169060200135610a8e565b34801561032957600080fd5b506103cb6004803603602081101561034057600080fd5b810190602081018135600160201b81111561035a57600080fd5b82018360208201111561036c57600080fd5b803590602001918460208302840111600160201b8311171561038d57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610abb945050505050565b005b3480156103d957600080fd5b50610231600480360360208110156103f057600080fd5b50356001600160a01b0316610c68565b34801561040c57600080fd5b506103cb6004803603602081101561042357600080fd5b810190602081018135600160201b81111561043d57600080fd5b82018360208201111561044f57600080fd5b803590602001918460208302840111600160201b8311171561047057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610c7a945050505050565b3480156104ba57600080fd5b506104d8600480360360208110156104d157600080fd5b5035610d6c565b604080516001600160a01b039092168252519081900360200190f35b34801561050057600080fd5b506103cb6004803603602081101561051757600080fd5b50356001600160a01b0316610d93565b34801561053357600080fd5b5061015a610e18565b34801561054857600080fd5b506103cb610e73565b34801561055d57600080fd5b506103cb6004803603602081101561057457600080fd5b50356001600160a01b0316610ed2565b34801561059057600080fd5b506103cb600480360360208110156105a757600080fd5b50356001600160a01b0316610f32565b3480156105c357600080fd5b50610208600480360360408110156105da57600080fd5b506001600160a01b038135169060200135610f95565b3480156105fc57600080fd5b506102086004803603602081101561061357600080fd5b50356001600160a01b031661105a565b34801561062f57600080fd5b506102086004803603606081101561064657600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561067557600080fd5b82018360208201111561068757600080fd5b803590602001918460018302840111600160201b831117156106a857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611078945050505050565b3480156106f557600080fd5b506102086004803603602081101561070c57600080fd5b50356001600160a01b0316611178565b34801561072857600080fd5b506102316004803603604081101561073f57600080fd5b506001600160a01b038135811691602001351661118d565b6102086004803603606081101561076d57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561079c57600080fd5b8201836020820111156107ae57600080fd5b803590602001918460018302840111600160201b831117156107cf57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506111e3945050505050565b34801561081c57600080fd5b506104d86112e1565b6007805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108ab5780601f10610880576101008083540402835291602001916108ab565b820191906000526020600020905b81548152906001019060200180831161088e57829003601f168201915b505050505081565b3360008181526006602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b60045481565b60006001600160a01b03831661093557600080fd5b6001600160a01b03841660009081526005602052604090205461095e908363ffffffff6112f016565b6001600160a01b038086166000908152600560205260408082209390935590851681522054610993908363ffffffff61130516565b6001600160a01b03841660009081526005602090815260408083209390935533825260039052205460ff16610a1b576001600160a01b03841660009081526006602090815260408083203384529091529020546109f6908363ffffffff6112f016565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35060019392505050565b60095460ff1681565b60026020526000908152604090205460ff1681565b3360009081526002602052604081205460ff16610aaa57600080fd5b610ab48383611315565b9392505050565b6000546001600160a01b03163314610ad257600080fd5b6000805b8251811015610b6b57828181518110610aeb57fe5b6020908102919091018101516001600160a01b0381166000908152600290925260409091205490925060ff1615610b63576001600160a01b038216600081815260026020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a25b600101610ad6565b5060005b600154811015610c635760018181548110610b8657fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091205490925060ff16610c5a57600180546000198101908110610bc757fe5b600091825260209091200154600180546001600160a01b039092169183908110610bed57fe5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055600180546000198101908110610c2857fe5b600091825260209091200180546001600160a01b03191690556001805490610c549060001983016113b4565b50610c5e565b6001015b610b6f565b505050565b60056020526000908152604090205481565b6000546001600160a01b03163314610c9157600080fd5b6000805b8251811015610c6357828181518110610caa57fe5b6020908102919091018101516001600160a01b0381166000908152600290925260409091205490925060ff16610d64576001805480820182557fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b038516908117909155600081815260026020526040808220805460ff1916909417909355915190917f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f691a25b600101610c95565b60018181548110610d7957fe5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b03163314610daa57600080fd5b6001600160a01b038116610dbd57600080fd5b600080546040516001600160a01b03808516939216917f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f91a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6008805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108ab5780601f10610880576101008083540402835291602001916108ab565b6000546001600160a01b03163314610e8a57600080fd5b600080546040516001600160a01b03909116917fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f91a2600080546001600160a01b0319169055565b6000546001600160a01b03163314610ee957600080fd5b6001600160a01b038116600081815260036020526040808220805460ff19169055517f1b3787b2ded581f9fe4b6277fdd8e10f36368c08f211dbcb089a1c8940582dea9190a250565b6000546001600160a01b03163314610f4957600080fd5b6001600160a01b038116600081815260036020526040808220805460ff19166001179055517f8fa80cb4996c90aaf328c499cae29ba648e2686924355d501d9e4755fc82360a9190a250565b60006001600160a01b038316610faa57600080fd5b33600090815260056020526040902054610fca908363ffffffff6112f016565b33600090815260056020526040808220929092556001600160a01b03851681522054610ffc908363ffffffff61130516565b6001600160a01b0384166000818152600560209081526040918290209390935580518581529051919233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a350600192915050565b6001600160a01b031660009081526002602052604090205460ff1690565b600061108484846108b3565b61108d57600080fd5b604051638f4ffcb160e01b815233600482018181526024830186905230604484018190526080606485019081528651608486015286516001600160a01b038a1695638f4ffcb195948a94938a939192909160a490910190602085019080838360005b838110156111075781810151838201526020016110ef565b50505050905090810190601f1680156111345780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561115657600080fd5b505af115801561116a573d6000803e3d6000fd5b506001979650505050505050565b60036020526000908152604090205460ff1681565b6001600160a01b03811660009081526003602052604081205460ff16156111b75750600019610914565b506001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b60006111ef84846108b3565b6111f857600080fd5b604051638f4ffcb160e01b815233600482018181526024830186905230604484018190526080606485019081528651608486015286516001600160a01b038a1695638f4ffcb195349590948b9490938b9360a40190602085019080838360005b83811015611270578181015183820152602001611258565b50505050905090810190601f16801561129d5780820380516001836020036101000a031916815260200191505b50955050505050506000604051808303818588803b1580156112be57600080fd5b505af11580156112d2573d6000803e3d6000fd5b50600198975050505050505050565b6000546001600160a01b031681565b6000828211156112ff57600080fd5b50900390565b8181018281101561091457600080fd5b60045460009061132b908363ffffffff61130516565b6004556001600160a01b038316600090815260056020526040902054611357908363ffffffff61130516565b6001600160a01b03841660008181526005602090815260408083209490945583518681529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a350600192915050565b815481835581811115610c6357600083815260209020610c639181019083016113f191905b808211156113ed57600081556001016113d9565b5090565b9056fea265627a7a723158201b29b74c27d09b37cdf7e7a94f259ab5c3bc3157f9e0cc14f294d88e9927b48464736f6c63430005110032"; +} diff --git a/test/factory/TokenFactory.t.sol b/test/factory/TokenFactory.t.sol new file mode 100644 index 0000000..8141b17 --- /dev/null +++ b/test/factory/TokenFactory.t.sol @@ -0,0 +1,44 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.23; + +import { Test } from "../../dependencies/forge-std-1.8.2/src/Test.sol"; +import { TokenFactory } from "src/factory/TokenFactory.sol"; + +contract TokenFactoryTest is Test { + function test_DeployAXS() public { + address axs = TokenFactory.createAXS(); + _assertTokenConfig(axs, "Axie Infinity Shard", "AXS", 18); + } + + function test_DeploySLP(uint256 dailyLimit) public { + address slp = TokenFactory.createSLP(dailyLimit); + _assertTokenConfig(slp, "Smooth Love Potion", "SLP", 0); + } + + function test_DeployUSDC() public { + address usdc = TokenFactory.createUSDC(); + _assertTokenConfig(usdc, "USD Coin", "USDC", 6); + } + + function test_DeployWETH() public { + address weth = TokenFactory.createWETH(); + _assertTokenConfig(weth, "Ronin Wrapped Ether", "WETH", 18); + } + + function _assertTokenConfig(address token, string memory name, string memory symbol, uint256 decimals) internal { + bool success; + bytes memory data; + + (success, data) = token.call(abi.encodeWithSignature("name()")); + assert(success); + assertEq(abi.decode(data, (string)), name, "Invalid name"); + + (success, data) = token.call(abi.encodeWithSignature("symbol()")); + assert(success); + assertEq(abi.decode(data, (string)), symbol, "Invalid symbol"); + + (success, data) = token.call(abi.encodeWithSignature("decimals()")); + assert(success); + assertEq(abi.decode(data, (uint256)), decimals, "Invalid decimals"); + } +}