9.1Spark限价单智能合约 (Spark Limit Orders Smart Contract)

https://github.com/compolabs/spark/tree/master/contracts

版本警告 (Version warning)

The master branch contains the latest work-in-progress version of the Spark smart contract. It hasn't been audited and may contain severe security issues or may not work at all.

主分支( master branch)包含Spark智能合约的最新工作进程版本。它没有经过审计,可能包含严重的安全问题,也可能根本无法工作。

关于 (About)

This repository contains a smart contract for Fuel blockchain which allows users to place limit orders orderbook, that later could be filled and matched on-chain. Limit order itself is a data structure created off-chain.

这个存储库包含了Fuel区块链的智能合约,它允许用户在订单簿上部署限价单,以后可以在链上执行和匹配。限价单本身是一个在链外创建的数据结构。

文档 (Docs)

合约存储 (Contract Storage)

storage {
   orders: StorageMap<u64, Order> = StorageMap {},
   orders_amount: u64 = 0,
   deposits: StorageMap<Address, u64> = StorageMap {},
   trades: StorageVec<Trade> = StorageVec {},
}

Abi

abi LimitOrders {
   #[storage(read)]
   fn get_deposit_by_address(address: Address) -> u64;

   #[payable]
   #[storage(read, write)]
   fn deposit();

   #[storage(read, write)]
   fn withdraw(amount: u64);

   #[storage(read)]
   fn orders_amount() -> u64;

   #[storage(read)]
   fn trades(offset: u64) -> (Option<Trade>, Option<Trade>, Option<Trade>, Option<Trade>, Option<Trade>, Option<Trade>, Option<Trade>, Option<Trade>, Option<Trade>, Option<Trade>);

   #[storage(read)]
   fn orders(offset: u64) -> (Option<Order>, Option<Order>, Option<Order>, Option<Order>, Option<Order>, Option<Order>, Option<Order>, Option<Order>, Option<Order>, Option<Order>);

   #[storage(read)]
   fn orders_by_id(ids: [u64; 10]) -> (Option<Order>, Option<Order>, Option<Order>, Option<Order>, Option<Order>, Option<Order>, Option<Order>, Option<Order>, Option<Order>, Option<Order>);

   #[storage(read)]
   fn order_by_id(id: u64) -> Order;

   #[payable]
   #[storage(read, write)]
   fn create_order(asset1: ContractId, amount1: u64, matcher_fee: u64) -> u64;

   #[storage(read, write)]
   fn cancel_order(id: u64);

   #[payable]
   #[storage(read, write)]
   fn fulfill_order(id: u64);

   #[storage(read, write)]
   fn match_orders(order_id_a: u64, order_id_b: u64);
}

结构 (Structs)

订单 Order

交易 Trade

穷举 (Enums)

状态 Status

使用Fuel Rust SDK设置和运行测试 (Setting up and running the tests using Fuel Rust SDK)

依赖性 (Dependencies)

forc is Sway equivalent of Rust's cargo. fuel-core is a Fuel full node implementation.

Sway的forc相当于Rust的cargo。 fuel-core是一个Fuel全节点的实现。

克隆 repo (Clone repo)

构建合约 (Build contract)

运行测试 (Run tests)

Last updated