AleoSwap 合约接口总结

AleoSwap 是基于 Aleo 区块链的去中心化交易所(DEX),采用了 Uniswap 机制。利用 Aleo 区块链的独特功能,AleoSwap 为用户提供了更高的隐私保护和全新的功能。

功能

创建代币

  • 功能: create_token

  • 参数: info: TokenInfo (包括代币名称、符号、小数位和总供应量)

  • 命令示例:

    snarkos developer execute -q $rpc_url -b $broadcast_url -p $private_key -r $fee_record \
      $program_id create_token "{name: 1431520340field, symbol: 1431520340field, decimals: 6u8, total_supply: 100000000000000u128, admin: $admin_addr}"
    

转账

  • 功能: transfer

  • 参数: token_id: field, to: address, amount: u128

  • 命令示例:

    snarkos developer execute -q $rpc_url -b $broadcast_url -p $private_key -r $fee_record \
      $program_id transfer 1field $to_address 100000000u128
    

授权

  • 功能: approve

  • 参数: token_id: field, spender: address, amount: u128

  • 命令示例:

    snarkos developer execute -q $rpc_url -b $broadcast_url -p $private_key -r $fee_record \
      $program_id approve 1field $spender 10000000000u128
    

从账户转账

  • 功能: transfer_from

  • 参数: token_id: field, from: address, to: address, amount: u128

  • 命令示例:

    snarkos developer execute -q $rpc_url -b $broadcast_url -p $private_key -r $fee_record \
      $program_id transfer_from 1field $from_addr $to_addr 100000000u128
    

转为私有

  • 功能: transfer_to_private

  • 参数: token_id: field, to: address, amount: u128

  • 命令示例:

    snarkos developer execute -q $rpc_url -b $broadcast_url -p $private_key -r $fee_record \
      $program_id transfer_to_private 1field $to_addr 100000000u128
    

转为公共

  • 功能: transfer_to_public

  • 参数: pt_in: PrivateToken, to: address, amount: u128

  • 命令示例:

    snarkos developer execute -q $rpc_url -b $broadcast_url -p $private_key -r $fee_record \
      $program_id transfer_to_public $private_token_record $to_addr 10000000u128
    

私有转账

  • 功能: transfer_privately

  • 参数: pt_in: PrivateToken, to: address, amount: u128

  • 命令示例:

    snarkos developer execute -q $rpc_url -b $broadcast_url -p $private_key -r $fee_record \
      $program_id transfer_privately $private_token_record $to_addr 50000000u128
    

合并代币

  • 功能: join

  • 参数: pt1: PrivateToken, pt2: PrivateToken

  • 命令示例:

    snarkos developer execute -q $rpc_url -b $broadcast_url -p $private_key -r $fee_record \
      $program_id join $private_token_record_1 $private_token_record_2
    

创建交易对

  • 功能: create_pair

  • 参数: token_a: field, token_b: field, amount_a: u128, amount_b: u128, to: address

  • 命令示例:

    snarkos developer execute -q $rpc_url -b $broadcast_url -p $private_key -r $fee_record \
      $program_id create_pair 1field 2field 100000000u128 10000000000u128 $to_addr
    

私密创建交易对

  • 功能: create_pair_privately

  • 参数: pt_a: PrivateToken, pt_b: PrivateToken, amount_a: u128, amount_b: u128, to: address, liquidity: u128

  • 命令示例:

    snarkos developer execute -q $rpc_url -b $broadcast_url -p $private_key -r $fee_record \
      $program_id create_pair_privately $private_token_record_1 $private_token_record_2 $to_addr $liquidity
    

增加流动性

  • 功能: add_liquidity

  • 参数: token_a: field, token_b: field, amount_a: u128, amount_b: u128, min_a: u128, min_b: u128, to: address

  • 命令示例:

    snarkos developer execute -q $rpc_url -b $broadcast_url -p $private_key -r $fee_record \
      $program_id add_liquidity 1field 2field 100000000u128 10000000000u128 0u128 0u128 $to_addr
    

私密增加流动性

  • 功能: add_liquidity_privately

  • 参数: pt_a: PrivateToken, pt_b: PrivateToken, amount_a: u128, amount_b: u128, min_a: u128, min_b: u128, min_liquidity: u128, to: address, refund_to: address

  • 命令示例:

    snarkos developer execute -q $rpc_url -b $broadcast_url -p $private_key -r $fee_record \
      $program_id add_liquidity_privately $private_token_record_1 $private_token_record_2 $to_addr $refund_to
    

移除流动性

  • 功能: remove_liquidity

  • 参数: token_a: field, token_b: field, liquidity: u128, min_a: u128, min_b: u128, to: address

  • 命令示例:

    snarkos developer execute -q $rpc_url -b $broadcast_url -p $private_key -r $fee_record \
      $program_id remove_liquidity 1field 2field 1000000000u128 0u128 0u128 $to_addr
    

私密移除流动性

  • 功能: remove_liquidity_privately

  • 参数: token_a: field, token_b: field, pt_lp: PrivateToken, liquidity: u128, min_a: u128, min_b: u128, to: address, refund_to: address

  • 命令示例:

    snarkos developer execute -q $rpc_url -b $broadcast_url -p $private_key -r $fee_record \
      $program_id remove_liquidity_privately $private_token_record $to_addr $refund_to
    

包装私有积分

  • 功能: wrap_private_credits

  • 参数: input: credits.leo/credits, to: address, amount: field, holder: address

  • 命令示例:

    snarkos developer execute -q $rpc_url -b $broadcast_url -p $private_key -r $fee_record \
      $program_id wrap_private_credits $input_record $to_addr 10000000field $holder_addr
    

包装公共积分

  • 功能: wrap_public_credits

  • 参数: to: address, amount: field, holder: address

  • 命令示例:

    snarkos developer execute -q $rpc_url -b $broadcast_url -p $private_key -r $fee_record \
      $program_id wrap_public_credits $to_addr 10000000field $holder_addr
    

解包

  • 功能: unwrap

  • 参数: to: address, amount: field, into_private: bool

  • 命令示例:

    snarkos developer execute -q $rpc_url -b $broadcast_url -p $private_key -r $fee_record \
      $program_id unwrap $to_addr 10000000field true
    

处理私有解包

  • 功能: handle_unwrap_to_private

  • 参数: index: u64, to: address, amount: field

  • 命令示例:

    snarkos developer execute -q $rpc_url -b $broadcast_url -p $private_key -r $fee_record \
      $program_id handle_unwrap_to_private 0u64 $to_addr 10000000field
    

处理公共解包

  • 功能: handle_unwrap_to_public

  • 参数: index: u64, to: address, amount: field

  • 命令示例:

    snarkos developer execute -q $rpc_url -b $broadcast_url -p $private_key -r $fee_record \
      $program_id handle_unwrap_to_public 1u64 $to_addr 10000000field
    

固定数量代币换取代币

  • 功能: swap_exact_tokens_for_tokens

  • 参数: token_in: field, token_out: field, amount_in: u128, amount_out_min: u128, to: address

  • 命令示例:

    snarkos developer execute -q $rpc_url -b $broadcast_url -p $private_key -r $fee_record \
      $program_id swap_exact_tokens_for_tokens 1field 2field 1000000u128 98000000u128 $to_addr
    

私有代币换取公共代币

  • 功能: swap_exact_private_for_public

  • 参数: pt_in: PrivateToken, token_out: field, amount_in: u128, amount_out_min: u128, to: address

  • 命令示例:

    snarkos developer execute -q $rpc_url -b $broadcast_url -p $private_key -r $fee_record \
      $program_id swap_exact_private_for_public $private_token_record $to_addr 98000000u128
    

私有代币换取私有代币

  • 功能: swap_exact_private_for_private

  • 参数: pt_in: PrivateToken, token_out: field, amount_in: u128, amount_out_min: u128, to_pri: address, to_pub: address

  • 命令示例:

    snarkos developer execute -q $rpc_url -b $broadcast_url -p $private_key -r $fee_record \
      $program_id swap_exact_private_for_private $private_token_record $to_pri $to_pub 98000000u128
    

公共代币换取私有代币

  • 功能: swap_exact_public_for_private

  • 参数: token_in: field, token_out: field, amount_in: u128, amount_out_min: u128, to_pri: address, to_pub: address

  • 命令示例:

    snarkos developer execute -q $rpc_url -b $broadcast_url -p $private_key -r $fee_record \
      $program_id swap_exact_public_for_private 1field 2field 1000000u128 98000000u128 $to_pri $to_pub
    

浮动输入换取固定输出

  • 功能: swap_tokens_for_exact_tokens

  • 参数: token_in: field, token_out: field, amount_in_max: u128, amount_out: u128, to: address

  • 命令示例:

    snarkos developer execute -q $rpc_url -b $broadcast_url -p $private_key -r $fee_record \
      $program_id swap_tokens_for_exact_tokens 2field 1field 50000000u128 500000u128 $to_addr
    

私有代币换取固定数量的公共代币

  • 功能: swap_private_for_exact_public

  • 参数: pt_in: PrivateToken, token_out: field, amount_in_max: u128, amount_out: u128, to: address, refund_to: address

  • 命令示例:

    snarkos developer execute -q $rpc_url -b $broadcast_url -p $private_key -r $fee_record \
      $program_id swap_private_for_exact_public $private_token_record $to_addr $refund_to 98000000u128
    

私有代币换取固定数量的私有代币

  • 功能: swap_private_for_exact_private

  • 参数: pt_in: PrivateToken, token_out: field, amount_in_max: u128, amount_out: u128, to_pri: address, refund_to: address

  • 命令示例:

    snarkos developer execute -q $rpc_url -b $broadcast_url -p $private_key -r $fee_record \
      $program_id swap_private_for_exact_private $private_token_record $to_pri $refund_to 98000000u128
    

公共代币换取固定数量的私有代币

  • 功能: swap_public_for_exact_private

  • 参数: token_in: field, token_out: field, amount_in_max: u128, amount_out: u128, to_pri: address

  • 命令示例:

    snarkos developer execute -q $rpc_url -b $broadcast_url -p $private_key -r $fee_record \
      $program_id swap_public_for_exact_private 1field 2field 1000000u128 98000000u128 $to_pri
    

代币水龙头

  • 功能: token_faucet

  • 参数: token_id: field, to: address

  • 命令示例:

    snarkos developer execute -q $rpc_url -b $broadcast_url -p $private_key -r $fee_record \
      $program_id token_faucet 1field $to_addr
    

设置代币水龙头

  • 功能: set_token_faucet

  • 参数: token_id: field, amount: u128

  • 命令示例:

    snarkos developer execute -q $rpc_url -b $broadcast_url -p $private_key -r $fee_record \
      $program_id set_token_faucet 1field 1000u128
    

更改代币管理员

  • 功能: change_token_admin

  • 参数: token_id: field, admin: address

  • 命令示例:

    snarkos developer execute -q $rpc_url -b $broadcast_url -p $private_key -r $fee_record \
      $program_id change_token_admin 1field $new_admin_addr
    

公共状态

余额

  • 描述: 存储所有代币和所有账户的余额。

  • 查询命令:

    curl $aleoRpc/testnet3/program/swap.aleo/mapping/balances/$key
    

授权

  • 描述: 存储所有代币和所有账户的授权数据。

  • 查询命令:

    curl $aleoRpc/testnet3/program/swap.aleo/mapping/allowance/$key
    

代币信息

  • 描述: 存储所有代币的元信息。

  • 查询命令:

    curl $aleoRpc/testnet3/program/swap.aleo/mapping/tokens/$token_id
    

水龙头配置

  • 描述: 存储所有代币的水龙头配置。

  • 查询命令:

    curl $aleoRpc/testnet3/program/swap.aleo/mapping/faucets/$token_id
    

交易对信息

  • 描述: 存储所有交易对的信息。

  • 查询命令:

    curl $aleoRpc/testnet3/program/swap.aleo/mapping/pairs/$pair_id
    

全局状态

  • 描述: 存储全局状态。

  • 查询命令:

    curl $aleoRpc/testnet3/program/swap.aleo/mapping/global_state/true
    

包装状态

  • 描述: 存储 WALEO(Wrapped Aleo)功能的状态。

  • 查询命令:

    curl $aleoRpc/testnet3/program/swap.aleo/mapping/wrap_state/true
    

解包历史

  • 描述: 存储所有 WALEO 的解包历史(包括待处理和已处理的)。

  • 查询命令:

    curl $aleoRpc/testnet3/program/swap.aleo/mapping/unwraps/$index
    

以上就是 AleoSwap 技术架构的详细介绍。通过利用 Aleo 区块链的独特功能,AleoSwap 提供了更高的隐私性和灵活性,适应了去中心化交易所和用户的多种需求。如果你有任何疑问或需要进一步的信息,可以随时访问我们的官方文档或加入我们的社区讨论。

总结

AleoSwap 作为基于 Aleo 区块链的去中心化交易所,通过集成 Uniswap 机制和 Aleo 区块链的独特隐私功能,极大地提升了交易所的隐私保护和功能多样性。无论是代币的创建、转账、流动性管理还是代币交换,AleoSwap 都提供了全面且安全的解决方案,为用户带来了更加自由和隐私的交易体验。期待在社区的共同努力下,AleoSwap 能够不断发展壮大,为更多用户提供优质的去中心化金融服务。

Aleo 官方链接: