This page will help you get started with Smart Contract API.

When writing data, you are executing smart contracts. You should be working with 3 smart contracts.

  • LiminalMarket
  • aUSD
  • SecurityToken

The addresses are listed below

Buy a stock - flow
When buying stock, the flow is the following

Retrieve the address of the symbol on chain using LiminalMarket.getSecurityToken method
Execute transfer on aUSD token. The to parameter is the contract address of the symbol, the amount is the dollar amount to buy

LiminalMarket liminalMarket = LiminalMarket(liminalMarketAddress);
string memory aaplAddress = liminalMarket.getSecurityToken('AAPL');

aUSD aUsdToken = aUSD(aUsdAddress);
aUsdToken.transfer(aaplAddress, amount);

Sell a stock - flow
When selling stock, the flow is the following

Retrieve the address of the contract symbol from the users address (he should have it in his wallet)
Execute transfer on the contract symbol token. The to parameter is the aUSD address, amount is the quantity of symbols to sell

LiminalMarket liminalMarket = LiminalMarket(liminalMarketAddress);
string memory aaplAddress = liminalMarket.getSecurityToken('AAPL');
  
SecurityToken securityToken = SecurityToken(aaplAddress);
securityToken.transfer(aUSDAddress, quantityToSell);

LiminalMarket - contract

  • Mumbai address: 0x6e9C29e416dc9F7A6A03ffebaB3f02Ef62a1baE4
  • Polygon address: 0x8B4fc0bcaED76a6569525d8Fe51E57cAd32FDd94

You need to retrieve the address of the symbol you want to buy. To do this you call the method getSecurityToken(symbol). You send in the symbol you want to buy (e.g. MSFT for Microsoft). The method will return the address of the ERC20 token that represents the stock.

aUSD - contract

  • Mumbai address: 0xe65Fb29C8CeB720755D456233c971DDb11fcbb8d
  • Polygon address: 0x9B780e71C2a8492E805e17616EB878f2e3874E21

By calling the transfer method, you are buying a stock. You call the aUSD.transfer(to, amount). The to is the address of the symbol that you got from LiminalMarket.getSecurityToken(symbol)

SecurityToken - contract
The address depends on which stock you are selling. It is only possible to sell stock that the user already owns, so the contract address should be retrieved from the user wallet.

LiminalMarket liminalMarket = LiminalMarket(liminalMarketAddress);
string memory aaplAddress = liminalMarket.getSecurityToken('AAPL');

When you have retrieved the address, you can initiate the contract as a standard ERC20 contract. You then call

The recipient is always the aUSD address (see above). The amount is the number of shares you want to sell. This is NOT a dollar amount.