Skip to content

Commit 1f21d53

Browse files
authored
Merge pull request #9 from Nexus-Protocol/ts_to_astroport
terraswap changed to astroport for basset_vault_contracts deployment
2 parents 48d24ae + 8dc59d9 commit 1f21d53

File tree

7 files changed

+142
-30
lines changed

7 files changed

+142
-30
lines changed

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,9 @@
1010

1111
1. https://github.com/Nexus-Protocol/basset-vault-contracts (`v1.5.1` tag)
1212
2. https://github.com/terraswap/terraswap (`3ae1c1252ffcfff0a5b6f67d8a87a1604edae3a3` commit)
13-
3. https://github.com/Nexus-Protocol/services-contracts (`v1.4.3` tag)
14-
4. https://github.com/CosmWasm/cosmwasm-plus (`v0.9.0` tag)
13+
3. https://github.com/astroport-fi/astroport-core (`v1.0.1` tag)
14+
4. https://github.com/Nexus-Protocol/services-contracts (`v1.4.3` tag)
15+
5. https://github.com/CosmWasm/cosmwasm-plus (`v0.9.0` tag)
1516

1617
##### build cosmwasm-plus
1718

src/basset_vault/definition.ts

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ import {
77
CommunityPoolConfig,
88
Cw20CodeId,
99
GovernanceConfig,
10-
init_terraswap_factory,
10+
init_astroport_factory,
1111
PSiTokensOwner,
1212
TokenConfig
1313
} from './../config';
1414
import {
1515
create_contract,
16-
create_usd_to_token_terraswap_pair,
16+
create_usd_to_token_astroport_pair,
1717
execute_contract,
1818
init_basset_vault,
1919
instantiate_contract,
@@ -23,14 +23,17 @@ import {AnchorMarketInfo} from "../integration_tests/deploy_anchor/config";
2323

2424
// ===================================================
2525
const artifacts_path = "wasm_artifacts";
26-
const path_to_cosmwasm_artifacts = `${artifacts_path}/cosmwasm_plus`
27-
const path_to_basset_vault_artifacts = `${artifacts_path}/nexus/basset_vaults`
28-
const path_to_services_contracts_artifacts = `${artifacts_path}/nexus/services`
29-
const path_to_terraswap_contracts_artifacts = `${artifacts_path}/terraswap`
26+
const path_to_cosmwasm_artifacts = `${artifacts_path}/cosmwasm_plus`;
27+
const path_to_basset_vault_artifacts = `${artifacts_path}/nexus/basset_vaults`;
28+
const path_to_services_contracts_artifacts = `${artifacts_path}/nexus/services`;
29+
const path_to_terraswap_contracts_artifacts = `${artifacts_path}/terraswap`;
30+
const path_to_astroport_contracts_artifacts = `${artifacts_path}/astroport`;
3031
// ===================================================
3132
export const cw20_contract_wasm = `${path_to_cosmwasm_artifacts}/cw20_base.wasm`;
3233
export const terraswap_factory_wasm = `${path_to_terraswap_contracts_artifacts}/terraswap_factory.wasm`;
3334
export const terraswap_pair_wasm = `${path_to_terraswap_contracts_artifacts}/terraswap_pair.wasm`;
35+
export const astroport_factory_wasm = `${path_to_astroport_contracts_artifacts}/astroport_factory.wasm`;
36+
export const astroport_pair_wasm = `${path_to_astroport_contracts_artifacts}/astroport_pair.wasm`;
3437
// ===================================================
3538
const governance_contract_wasm = `${path_to_services_contracts_artifacts}/nexus_governance.wasm`;
3639
const basset_vault_strategy_contract_wasm = `${path_to_basset_vault_artifacts}/basset_vault_basset_vault_strategy.wasm`;
@@ -99,18 +102,18 @@ export async function full_init(lcd_client: LCDClient, sender: Wallet, psi_token
99102
);
100103
console.log(`psi_token address set in governance contract`);
101104
console.log(`=======================`);
102-
105+
103106
// instantiate Psi-UST pair contract
104-
let terraswap_factory_contract_addr = await init_terraswap_factory(lcd_client, sender, cw20_code_id);
105-
let psi_ust_pair_contract = await create_usd_to_token_terraswap_pair(lcd_client, sender, terraswap_factory_contract_addr, psi_token_addr);
107+
let astroport_factory_contract_addr = await init_astroport_factory(lcd_client, sender, cw20_code_id);
108+
let psi_ust_pair_contract = await create_usd_to_token_astroport_pair(lcd_client, sender, astroport_factory_contract_addr, psi_token_addr);
106109
console.log(`Psi-UST pair contract instantiated\n\taddress: ${psi_ust_pair_contract.pair_contract_addr}\n\tlp token address: ${psi_ust_pair_contract.liquidity_token_addr}`);
107110
console.log(`=======================`);
108-
111+
109112
// instantiate community_pool
110113
let community_pool_config = CommunityPoolConfig(lcd_client, governance_contract_addr, psi_token_addr);
111114
let community_pool_contract_addr = await init_community_pool(lcd_client, sender, community_pool_config);
112115
console.log(`=======================`);
113-
116+
114117
// upload contracts for basset_vault
115118
let nasset_token_code_id = await store_contract(lcd_client, sender, nasset_token_wasm);
116119
console.log(`nasset_token uploaded\n\tcode_id: ${nasset_token_code_id}`);
@@ -146,7 +149,7 @@ export async function full_init(lcd_client: LCDClient, sender: Wallet, psi_token
146149
console.log(`=======================`);
147150

148151
// instantiate basset_vault for bLuna
149-
let basset_vault_config_for_bluna = BassetVaultConfigForbLuna(lcd_client, governance_contract_addr, community_pool_contract_addr, nasset_token_code_id, nasset_token_config_holder_code_id, nasset_token_rewards_code_id, psi_distributor_code_id, psi_token_addr, psi_ust_pair_contract.pair_contract_addr, basset_vault_strategy_contract_addr_for_bluna, terraswap_factory_contract_addr);
152+
let basset_vault_config_for_bluna = BassetVaultConfigForbLuna(lcd_client, governance_contract_addr, community_pool_contract_addr, nasset_token_code_id, nasset_token_config_holder_code_id, nasset_token_rewards_code_id, psi_distributor_code_id, psi_token_addr, psi_ust_pair_contract.pair_contract_addr, basset_vault_strategy_contract_addr_for_bluna, astroport_factory_contract_addr);
150153

151154
if (anchor_market_info !== null && anchor_market_info !== undefined) {
152155
basset_vault_config_for_bluna.anchor_addr = anchor_market_info.anchor_token_addr;
@@ -176,7 +179,7 @@ export async function full_init(lcd_client: LCDClient, sender: Wallet, psi_token
176179
console.log(`=======================`);
177180

178181
// instantiate basset_vault for bETH
179-
let basset_vault_config_for_beth = BassetVaultConfigForbEth(lcd_client, governance_contract_addr, community_pool_contract_addr, nasset_token_code_id, nasset_token_config_holder_code_id, nasset_token_rewards_code_id, psi_distributor_code_id, psi_token_addr, psi_ust_pair_contract.pair_contract_addr, basset_vault_strategy_contract_addr_for_beth, terraswap_factory_contract_addr);
182+
let basset_vault_config_for_beth = BassetVaultConfigForbEth(lcd_client, governance_contract_addr, community_pool_contract_addr, nasset_token_code_id, nasset_token_config_holder_code_id, nasset_token_rewards_code_id, psi_distributor_code_id, psi_token_addr, psi_ust_pair_contract.pair_contract_addr, basset_vault_strategy_contract_addr_for_beth, astroport_factory_contract_addr);
180183

181184
if (anchor_market_info !== null && anchor_market_info !== undefined) {
182185
basset_vault_config_for_beth.anchor_addr = anchor_market_info.anchor_token_addr;

src/config.ts

Lines changed: 49 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
import {LCDClient, Wallet} from '@terra-money/terra.js';
2-
import {cw20_contract_wasm, terraswap_factory_wasm, terraswap_pair_wasm} from "./basset_vault/definition"
2+
import {
3+
astroport_factory_wasm,
4+
astroport_pair_wasm,
5+
cw20_contract_wasm,
6+
terraswap_factory_wasm,
7+
terraswap_pair_wasm
8+
} from "./basset_vault/definition"
39
import {instantiate_contract, store_contract} from './utils';
410

511
// ================================================
@@ -35,8 +41,8 @@ export async function init_terraswap_factory(lcd_client: LCDClient, sender: Wall
3541
let terraswap_pair_code_id = await store_contract(lcd_client, sender, terraswap_pair_wasm);
3642
console.log(`terraswap_pair uploaded\n\tcode_id: ${terraswap_pair_code_id}`);
3743
let terraswap_factory_init_msg = {
38-
pair_code_id: terraswap_pair_code_id,
39-
token_code_id: cw20_code_id,
44+
pair_code_id: terraswap_pair_code_id,
45+
token_code_id: cw20_code_id,
4046
};
4147
let terraswap_factory_contract_addr = await instantiate_contract(lcd_client, sender, sender.key.accAddress, terraswap_factory_code_id, terraswap_factory_init_msg);
4248
console.log(`terraswap_factory instantiated\n\taddress: ${terraswap_factory_contract_addr}`);
@@ -46,6 +52,35 @@ export async function init_terraswap_factory(lcd_client: LCDClient, sender: Wall
4652
}
4753
}
4854

55+
export async function init_astroport_factory(lcd_client: LCDClient, sender: Wallet, cw20_code_id: number): Promise<string> {
56+
if (lcd_client.config.chainID === "localterra") {
57+
console.log(`in localterra, so storing our own astroport contracts`);
58+
let astroport_factory_code_id = await store_contract(lcd_client, sender, astroport_factory_wasm);
59+
console.log(`astroport_factory uploaded\n\tcode_id: ${astroport_factory_code_id}`);
60+
let astroport_pair_code_id = await store_contract(lcd_client, sender, astroport_pair_wasm);
61+
console.log(`astroport_pair uploaded\n\tcode_id: ${astroport_pair_code_id}`);
62+
let astroport_factory_init_msg = {
63+
owner: sender.key.accAddress,
64+
pair_configs: [
65+
{
66+
code_id: astroport_pair_code_id,
67+
pair_type: {
68+
xyk: {}
69+
},
70+
total_fee_bps: 0,
71+
maker_fee_bps: 0
72+
},
73+
],
74+
token_code_id: cw20_code_id
75+
}
76+
let astroport_factory_contract_addr = await instantiate_contract(lcd_client, sender, sender.key.accAddress, astroport_factory_code_id, astroport_factory_init_msg);
77+
console.log(`astroport_factory instantiated\n\taddress: ${astroport_factory_contract_addr}`);
78+
return astroport_factory_contract_addr;
79+
} else {
80+
return astroport_factory_contract_addr(lcd_client);
81+
}
82+
}
83+
4984
// ================================================
5085

5186
export interface Cw20Coin {
@@ -153,6 +188,17 @@ export function terraswap_factory_contract_addr(lcd_client: LCDClient): string {
153188
}
154189
}
155190

191+
const astroport_factory_contract_addr_prod = "terra1fnywlw4edny3vw44x04xd67uzkdqluymgreu7g";
192+
const astroport_factory_contract_addr_testnet = "terra15jsahkaf9p0qu8ye873p0u5z6g07wdad0tdq43";
193+
194+
export function astroport_factory_contract_addr(lcd_client: LCDClient): string {
195+
if (is_prod(lcd_client)) {
196+
return astroport_factory_contract_addr_prod;
197+
} else {
198+
return astroport_factory_contract_addr_testnet;
199+
}
200+
}
201+
156202
// ================================================
157203
// Anchor params
158204
// {

src/integration_tests/deploy_anchor/definition.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import {Coin, getContractEvents, LCDClient, Wallet} from '@terra-money/terra.js';
22
import {
33
create_contract,
4-
create_usd_to_token_terraswap_pair,
4+
create_usd_to_token_astroport_pair,
55
execute_contract,
66
instantiate_contract,
77
instantiate_contract_raw,
@@ -22,7 +22,7 @@ import {
2222
BethRewardConfig,
2323
BethTokenConfig
2424
} from './config';
25-
import {Cw20CodeId, init_terraswap_factory, TokenConfig} from '../../config';
25+
import {Cw20CodeId, init_astroport_factory, TokenConfig} from '../../config';
2626

2727
//=============================================================================
2828
const artifacts_path = "wasm_artifacts";
@@ -208,8 +208,8 @@ async function anchor_init_verbose(
208208
console.log(`=======================`);
209209

210210
// instantiate ANC-UST pair contract
211-
let terraswap_factory_contract_addr = await init_terraswap_factory(lcd_client, sender, cw20_code_id);
212-
let anc_ust_pair_contract = await create_usd_to_token_terraswap_pair(lcd_client, sender, terraswap_factory_contract_addr, anchor_token_addr);
211+
let astroport_factory_contract_addr = await init_astroport_factory(lcd_client, sender, cw20_code_id);
212+
let anc_ust_pair_contract = await create_usd_to_token_astroport_pair(lcd_client, sender, astroport_factory_contract_addr, anchor_token_addr);
213213
console.log(`ANC-UST pair contract instantiated\n\taddress: ${anc_ust_pair_contract.pair_contract_addr}\n\tlp token address: ${anc_ust_pair_contract.liquidity_token_addr}`);
214214
console.log(`=======================`);
215215

src/utils.ts

Lines changed: 70 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -91,17 +91,17 @@ export async function send_message(lcd_client: LCDClient, sender: Wallet, messag
9191
// ============================================================
9292
// ============================================================
9393

94-
export interface TerraswapPairInfo {
94+
export interface SwapPairInfo {
9595
pair_contract_addr: string,
9696
liquidity_token_addr: string
9797
}
9898

99-
export async function create_usd_to_token_terraswap_pair(lcd_client: LCDClient, sender: Wallet, terraswap_factory_contract_addr: string, token_addr: string): Promise<TerraswapPairInfo> {
99+
export async function create_usd_to_token_terraswap_pair(lcd_client: LCDClient, sender: Wallet, terraswap_factory_contract_addr: string, token_addr: string): Promise<SwapPairInfo> {
100100
const create_pair_msg = {
101101
create_pair: {
102102
asset_infos: [
103-
{ token: { contract_addr: token_addr } },
104-
{ native_token: { denom: "uusd" } },
103+
{token: {contract_addr: token_addr}},
104+
{native_token: {denom: "uusd"}},
105105
]
106106
}
107107
};
@@ -116,7 +116,7 @@ export async function create_usd_to_token_terraswap_pair(lcd_client: LCDClient,
116116
}
117117
}
118118

119-
export async function create_token_to_token_terraswap_pair(lcd_client: LCDClient, sender: Wallet, terraswap_factory_contract_addr: string, token_1_addr: string, token_2_addr: string): Promise<TerraswapPairInfo> {
119+
export async function create_token_to_token_terraswap_pair(lcd_client: LCDClient, sender: Wallet, terraswap_factory_contract_addr: string, token_1_addr: string, token_2_addr: string): Promise<SwapPairInfo> {
120120
const create_pair_msg = {
121121
create_pair: {
122122
asset_infos: [
@@ -136,15 +136,77 @@ export async function create_token_to_token_terraswap_pair(lcd_client: LCDClient
136136
}
137137
}
138138

139-
function parse_pair_creation(pair_creation_result: BlockTxBroadcastResult): TerraswapPairInfo {
140-
var pair_info: TerraswapPairInfo = {
139+
export async function create_usd_to_token_astroport_pair(lcd_client: LCDClient, sender: Wallet, astroport_factory_contract_addr: string, token_addr: string): Promise<SwapPairInfo> {
140+
const create_pair_msg = {
141+
create_pair: {
142+
pair_type: {
143+
xyk: {}
144+
},
145+
asset_infos: [
146+
{
147+
token: {
148+
contract_addr: token_addr
149+
}
150+
},
151+
{
152+
native_token: {
153+
denom: "uusd"
154+
}
155+
}
156+
],
157+
}
158+
}
159+
160+
while (true) {
161+
let pair_creation_result = await execute_contract(lcd_client, sender, astroport_factory_contract_addr, create_pair_msg);
162+
if (pair_creation_result !== undefined && isTxSuccess(pair_creation_result)) {
163+
return parse_pair_creation(pair_creation_result);
164+
} else {
165+
await sleep(1000);
166+
}
167+
}
168+
}
169+
170+
export async function create_token_to_token_astroport_pair(lcd_client: LCDClient, sender: Wallet, astroport_factory_contract_addr: string, token_1_addr: string, token_2_addr: string): Promise<SwapPairInfo> {
171+
const create_pair_msg = {
172+
create_pair: {
173+
pair_type: {
174+
xyk: {}
175+
},
176+
asset_infos: [
177+
{
178+
token: {
179+
contract_addr: token_1_addr
180+
}
181+
},
182+
{
183+
token: {
184+
contract_addr: token_2_addr
185+
}
186+
},
187+
],
188+
}
189+
}
190+
191+
while (true) {
192+
let pair_creation_result = await execute_contract(lcd_client, sender, astroport_factory_contract_addr, create_pair_msg);
193+
if (pair_creation_result !== undefined && isTxSuccess(pair_creation_result)) {
194+
return parse_pair_creation(pair_creation_result);
195+
} else {
196+
await sleep(1000);
197+
}
198+
}
199+
}
200+
201+
function parse_pair_creation(pair_creation_result: BlockTxBroadcastResult): SwapPairInfo {
202+
var pair_info: SwapPairInfo = {
141203
pair_contract_addr: '',
142204
liquidity_token_addr: ''
143205
};
144206
let contract_events = getContractEvents(pair_creation_result);
145207
for (let contract_event of contract_events) {
146208
let pair_contract_addr = contract_event["pair_contract_addr"];
147-
if ( pair_contract_addr !== undefined ) {
209+
if (pair_contract_addr !== undefined) {
148210
pair_info.pair_contract_addr = pair_contract_addr;
149211
}
150212

295 KB
Binary file not shown.
441 KB
Binary file not shown.

0 commit comments

Comments
 (0)