Spark文档-最后更新20230529(last update 20230529)
  • ⚡欢迎(Welcome)
    • 1.导言(Introduction)
    • 2.团队 (Team)
    • 3.为什么选择Fuel (Why Fuel)
    • 4.路线图 (Roadmap)
    • 5.费用和经济学 (Fees + economy)
  • 🎯准备开始 (Get Started)
    • 6. 创建钱包 (Create Wallet)
    • 7.补足余额 (Top up balance)
    • 8.在Spark上开始交易 (Start Trading on Spark)
  • 🌴开发者 (Developers)
    • 9.基于智能合约的订单簿 (Smart contract-based order book)
      • 9.1Spark限价单智能合约 (Spark Limit Orders Smart Contract)
      • 9.2 订单匹配引擎 (Orders Matching Engine)
      • 9.3 前端(Frontend)
    • 10.基于谓词的订单簿 (Predicate-based order book)
      • 10.1 谓词订单构建者服务 (Predicate orders builder service)
      • 10.2 创建订单脚本 (Create order script)
      • 10.3 订单模板谓词 (Order template predicate)
      • 10.4 匹配引擎 (Matcher engine)
      • 10.5 前端 (Frontend)
    • 11.如何运行spark当地节点 (How to run spark on the local node)
Powered by GitBook
On this page
  1. 开发者 (Developers)
  2. 9.基于智能合约的订单簿 (Smart contract-based order book)

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

Previous9.基于智能合约的订单簿 (Smart contract-based order book)Next9.2 订单匹配引擎 (Orders Matching Engine)

Last updated 1 year ago

版本警告 (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

pub struct Order {
   asset0: ContractId,
   amount0: u64,
   asset1: ContractId,
   amount1: u64,
   status: Status,
   fulfilled0: u64,
   fulfilled1: u64,
   owner: Address,
   id: u64,
   timestamp: u64,
   matcher_fee: u64,
   matcher_fee_used: u64,
}

交易 Trade

struct Trade {
   order_id: u64,
   asset0: ContractId,
   amount0: u64,
   asset1: ContractId,
   amount1: u64,
   timestamp: u64,
}

穷举 (Enums)

状态 Status

enum Status {
    Active: (),
    Canceled: (),
    Completed: (),
}

使用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)

git clone https://github.com/sway-gang/spark.git 
cd spark

构建合约 (Build contract)

cd contract
forc build

运行测试 (Run tests)

cargo test

​;

​.

🌴
https://github.com/compolabs/spark/tree/master/contracts
最新稳定的Rust工具链 The latest stable Rust toolchain
forc 和 fuel-core 二进制文件 forc and fuel-core binaries