Skip to content

Commit 79292bf

Browse files
committed
[ARM] Deploy 037 USD ARM (PYUSD/USDG) on mainnet
Record the on-chain execution of 037_DeployUSDARMScript: the USDC-quoted USD ARM (MultiAssetARM) with PYUSD and USDG wired through their own PaxosAssetAdapter proxies. Adds the 8 deployed contracts and the 037 execution entry to deployments-1.json, and normalizes the 035 proposalId to a string. Rename 037_DeployPaxosARMScript to 037_DeployUSDARMScript: the contract name, the recorded deployment names (STABLES_ARM* -> USD_ARM*) and the ARM name/symbol ("Stables ARM"/"ARM-USDC-Stables" -> "USD ARM"/"ARM-USD"). The deployment logic is unchanged. Ownership of the ARM, its CapManager and both adapter proxies is handed to the 2/8 STRATEGIST multisig within _execute(), so there is no governance proposal and the entry is recorded with proposalId 1 (NO_GOVERNANCE).
1 parent 74fa553 commit 79292bf

2 files changed

Lines changed: 50 additions & 12 deletions

File tree

build/deployments-1.json

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,38 @@
111111
{
112112
"implementation": "0xE620aFB67223AE03C260112aE21A717Af94C90f0",
113113
"name": "ETHENA_ARM_SUSDE_ADAPTER"
114+
},
115+
{
116+
"implementation": "0x5c68a604d39A639C0b8CC115f0823C50272CF13a",
117+
"name": "USD_ARM"
118+
},
119+
{
120+
"implementation": "0xAAB4F9e842e5D34ec61B1DBAAE8EBa4559F0eEF6",
121+
"name": "USD_ARM_CAP_MAN"
122+
},
123+
{
124+
"implementation": "0x70A7Af16c180141839656d571ff4ef3be155c48e",
125+
"name": "USD_ARM_CAP_IMPL"
126+
},
127+
{
128+
"implementation": "0x1405CDB24f93A60d023400cb03787bB8576EE490",
129+
"name": "USD_ARM_IMPL"
130+
},
131+
{
132+
"implementation": "0x50223D4f7c027DF74939555E92584C6332c613B2",
133+
"name": "USD_ARM_PYUSD_ADAPTER_IMPL"
134+
},
135+
{
136+
"implementation": "0x0C9ac6D63B2b2A1b502E29eC47a53d0966Ea9465",
137+
"name": "USD_ARM_PYUSD_ADAPTER"
138+
},
139+
{
140+
"implementation": "0x7c4c0B599E17C3Ad4ae37Ba61Eef50980e13203B",
141+
"name": "USD_ARM_USDG_ADAPTER_IMPL"
142+
},
143+
{
144+
"implementation": "0xAb98aC901B8A26636d9cf3Cf38d9aCdcD045788f",
145+
"name": "USD_ARM_USDG_ADAPTER"
114146
}
115147
],
116148
"executions": [
@@ -296,9 +328,15 @@
296328
},
297329
{
298330
"name": "035_UnpauseEthenaARMScript",
299-
"proposalId": 105952564920326880829480980653921695351704517467605619581569766325476268429476,
331+
"proposalId": "105952564920326880829480980653921695351704517467605619581569766325476268429476",
300332
"tsDeployment": 1782206279,
301333
"tsGovernance": 1
334+
},
335+
{
336+
"name": "037_DeployUSDARMScript",
337+
"proposalId": 1,
338+
"tsDeployment": 1783493495,
339+
"tsGovernance": 1
302340
}
303341
]
304342
}

script/deploy/mainnet/037_DeployPaxosARMScript.s.sol renamed to script/deploy/mainnet/037_DeployUSDARMScript.s.sol

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import {State} from "script/deploy/helpers/DeploymentTypes.sol";
2626
/// at deployment - the adapter owner replaces it with the real Paxos deposit address via
2727
/// setPaxosRecipient() once Paxos provides it. No lending market is wired up here (idle USDC
2828
/// stays in the ARM until a market is added in a follow-up script).
29-
contract $037_DeployPaxosARMScript is AbstractDeployScript("037_DeployPaxosARMScript") {
29+
contract $037_DeployUSDARMScript is AbstractDeployScript("037_DeployUSDARMScript") {
3030
/// @dev Owner of the ARM, CapManager and both PaxosAssetAdapter proxies: the multi-chain 2/8 multisig.
3131
address internal constant OWNER_2_OF_8 = Mainnet.STRATEGIST;
3232
/// @dev Operational role (request/claim redemptions, submit Paxos redeems, set prices): the
@@ -54,15 +54,15 @@ contract $037_DeployPaxosARMScript is AbstractDeployScript("037_DeployPaxosARMSc
5454
function _execute() internal override {
5555
// 1. Deploy the ARM proxy.
5656
Proxy armProxy = new Proxy();
57-
_recordDeployment("STABLES_ARM", address(armProxy));
57+
_recordDeployment("USD_ARM", address(armProxy));
5858

5959
// 2. Deploy the CapManager (proxy + implementation), owned by the 2/8 multisig and
6060
// operated by Talos.
6161
Proxy capManProxy = new Proxy();
62-
_recordDeployment("STABLES_ARM_CAP_MAN", address(capManProxy));
62+
_recordDeployment("USD_ARM_CAP_MAN", address(capManProxy));
6363

6464
CapManager capManagerImpl = new CapManager(address(armProxy));
65-
_recordDeployment("STABLES_ARM_CAP_IMPL", address(capManagerImpl));
65+
_recordDeployment("USD_ARM_CAP_IMPL", address(capManagerImpl));
6666

6767
// Initialize the CapManager with Talos as operator; keep the deployer as owner for now.
6868
bytes memory capManData = abi.encodeWithSignature("initialize(address)", OPERATOR_TALOS);
@@ -85,7 +85,7 @@ contract $037_DeployPaxosARMScript is AbstractDeployScript("037_DeployPaxosARMSc
8585
MultiAssetARM armImpl = new MultiAssetARM({
8686
_liquidityAsset: Mainnet.USDC, _claimDelay: 10 minutes, _minSharesToRedeem: 1e6, _allocateThreshold: 100e6
8787
});
88-
_recordDeployment("STABLES_ARM_IMPL", address(armImpl));
88+
_recordDeployment("USD_ARM_IMPL", address(armImpl));
8989

9090
// 6. Give the deployer the MIN_LIQUIDITY (1 atomic unit of USDC, i.e. 0.000001 USDC) that
9191
// initialize() pulls to seed dead shares. 035 wraps ETH into WETH for this, but USDC
@@ -103,8 +103,8 @@ contract $037_DeployPaxosARMScript is AbstractDeployScript("037_DeployPaxosARMSc
103103
// 7. Initialize the ARM proxy: deployer stays owner during setup, Talos is the operator.
104104
bytes memory armData = abi.encodeWithSignature(
105105
"initialize(string,string,address,uint256,address,address)",
106-
"Stables ARM", // name
107-
"ARM-USDC-Stables", // symbol
106+
"USD ARM", // name
107+
"ARM-USD", // symbol
108108
OPERATOR_TALOS, // operator
109109
2000, // 20% performance fee
110110
Mainnet.BUYBACK_OPERATOR, // fee collector
@@ -116,15 +116,15 @@ contract $037_DeployPaxosARMScript is AbstractDeployScript("037_DeployPaxosARMSc
116116
// 8. Deploy the PYUSD Paxos adapter (pegged 1:1) and register PYUSD.
117117
{
118118
PaxosAssetAdapter adapterImpl = new PaxosAssetAdapter(address(armProxy), Mainnet.PYUSD, Mainnet.USDC);
119-
_recordDeployment("STABLES_ARM_PYUSD_ADAPTER_IMPL", address(adapterImpl));
119+
_recordDeployment("USD_ARM_PYUSD_ADAPTER_IMPL", address(adapterImpl));
120120
Proxy adapterProxy = new Proxy();
121121
// paxosRecipient is a placeholder - the 2/8 multisig owner replaces it via setPaxosRecipient().
122122
adapterProxy.initialize(
123123
address(adapterImpl),
124124
OWNER_2_OF_8,
125125
abi.encodeWithSelector(PaxosAssetAdapter.initialize.selector, OPERATOR_TALOS, Mainnet.PAXOS_RECIPIENT)
126126
);
127-
_recordDeployment("STABLES_ARM_PYUSD_ADAPTER", address(adapterProxy));
127+
_recordDeployment("USD_ARM_PYUSD_ADAPTER", address(adapterProxy));
128128
arm.addBaseAsset(
129129
Mainnet.PYUSD,
130130
address(adapterProxy),
@@ -140,15 +140,15 @@ contract $037_DeployPaxosARMScript is AbstractDeployScript("037_DeployPaxosARMSc
140140
// 9. Deploy the USDG Paxos adapter (pegged 1:1) and register USDG.
141141
{
142142
PaxosAssetAdapter adapterImpl = new PaxosAssetAdapter(address(armProxy), Mainnet.USDG, Mainnet.USDC);
143-
_recordDeployment("STABLES_ARM_USDG_ADAPTER_IMPL", address(adapterImpl));
143+
_recordDeployment("USD_ARM_USDG_ADAPTER_IMPL", address(adapterImpl));
144144
Proxy adapterProxy = new Proxy();
145145
// paxosRecipient is a placeholder - the 2/8 multisig owner replaces it via setPaxosRecipient().
146146
adapterProxy.initialize(
147147
address(adapterImpl),
148148
OWNER_2_OF_8,
149149
abi.encodeWithSelector(PaxosAssetAdapter.initialize.selector, OPERATOR_TALOS, Mainnet.PAXOS_RECIPIENT)
150150
);
151-
_recordDeployment("STABLES_ARM_USDG_ADAPTER", address(adapterProxy));
151+
_recordDeployment("USD_ARM_USDG_ADAPTER", address(adapterProxy));
152152
arm.addBaseAsset(
153153
Mainnet.USDG,
154154
address(adapterProxy),

0 commit comments

Comments
 (0)