Tinyman Docs
Search…
Bootstrap Pool
Setup a Pool for a pair of assets. The Pool account should be a LogicSig contract account.

Transaction Group

0. Pay - pay fees from Pooler to Pool
  • fees to cover Tx 1,2,3,4
  • Signed by Pooler
{
"txn": {
"type": "pay",
"rcv": "{POOL_ADDRESS}",
"snd": "{POOLER_ADDRESS",
"amt": 960000,
"fee": 1000,
"note": "",
...
},
"sig": "{POOLER_SIG}",
}
  1. 1.
    App Call - OptIn call to Validator App with args ['bootstrap', asset1ID, asset2ID]
  • signed by Pool LogicSig
{
"txn": {
"type": "appl",
"snd": "{POOL_ADDRESS}",
"apid": {VALIDATOR_APP_ID},
"apan": 1, // OnComplete: OptIn
"apaa": ['Ym9vdHN0cmFw', '{ASSET1_ID}', '{ASSET2_ID}'], // ['bootstrap', asset1ID, asset2ID]
"apas": [{ASSET1_ID}, {ASSET2_ID}], // or just [{ASSET1_ID}] if asset 2 is Algo
"fee": 1000,
...
},
"lsig": "{POOL_LOGICSIG}",
}
2. AssetConfig - create asset for liquidity token
  • signed by Pool LogicSig
{
"txn": {
"type": "acfg"
"snd": "{POOL_ADDRESS}",
"fee": 1000,
"apar": {
"an": "Tinyman Pool USDC-ALGO",
"un": "TM1POOL"
"au": "https://tinyman.org",
"t": 18446744073709551615, // 0xFFFFFFFFFFFFFFFF
"dc": 6,
},
...
},
"lsig": "{POOL_LOGICSIG}",
}
3. Asset OptIn - Pool opt in to Asset 1
  • signed by Pool LogicSig
{
"txn": {
"type": "axfer",
"arcv": "{POOL_ADDRESS}",
"snd": "{POOL_ADDRESS}",
"fee": 1000,
"xaid": {ASSET_1_ID},
...
},
"lsig": "{POOL_LOGICSIG}",
}
4. (Optional) Asset OptIn - Pool opt in to Asset 2
  • Only if Asset 2 is not Algo
  • signed by Pool LogicSig
{
"txn": {
"type": "axfer",
"snd": "{POOL_ADDRESS}",
"arcv": "{POOL_ADDRESS}",
"fee": 1000,
"xaid": {ASSET_2_ID},
...
},
"lsig": "{POOL_LOGICSIG}",
}

Validator App State Changes

Global State

None

Pool Account Local State

  • a1: {int} // ASSET1_ID
  • a2: {int} // ASSET2_ID
Copy link
Outline
Transaction Group
Validator App State Changes