Skip to content

Instantly share code, notes, and snippets.

@changwu-tw
Last active February 8, 2021 08:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save changwu-tw/fef6e8f3666157b68de85660c7f70893 to your computer and use it in GitHub Desktop.
Save changwu-tw/fef6e8f3666157b68de85660c7f70893 to your computer and use it in GitHub Desktop.

Tokenlon 與 1inch 的區別

從功能上來說,Tokenlon 與 1inch 沒有區別,都是 Aggregator,作為聚合鏈上碎裂的流動性,並且提供最佳報價

但從本質與系統層面上,Tokenlon 的設計是以使用者體驗為出發的 Aggregator

  • 聚合鏈上流動性

    • Tokenlon 在之前的版本,主要是以 professional market maker (PMM) 作為流動性來源,即專業做市商,所以報價上類似 OTC,訂單的報價是固定的,不會有滑價,只要在訂單過期前成交即可。12/23 後升級的版本,將 AMM 的鏈上流動性給引入,包含 UniSwap, SushiSwap, Curve,好處就是,支持的幣種更多,配合 PMM 與 AMM,提供用戶更多幣種,以及流動源,增加最佳報價的可能性
    • PMM 不會有滑點,因為是 OTC 報價,在 AMM 出現波動時,或是礦工費飆漲時,就會有優勢,融合 AMM 與 PMM 優勢是聚合的好處
  • Tokenlon 採 TX relayer 的方式讓訂單上鏈,這樣有幾個好處

    • 沒有 ETH 的使用者,仍舊可以進行幣幣兌換
    • relayer 可確保訂單在期限內上鏈,並自動調整 gas fee
    • relayer 會對訂單進行滑點保護,確保使用者兌換到預期的代幣數量
    • 因為太多的使用者在自行下單時,因為不明白滑點,或是如何提高手續費,導致訂單失敗而浪費手續費

最明顯的結果,就是上鏈成功率比其他同質的產品高,達到 99.8%

  • 設有滑點補償

    • 由於 Tokenlon 僅在交易成功上鏈後,才會向使用者收取 0.3% 的手續費,當兌換數量小於使用者預期的數量 (例如:1% 滑點),為了避免 TX relayer 浪費礦工費,Tokenlon 會以平台的手續費協助補償,避免失敗的訂單浪費礦工費成為 Tokenlon 的成本
  • 手續費透明

    • 絕多數的交易所,訂單上最明顯的是代幣價格與數量,但在手續費,礦工費的明細上,不是很好理解,對使用者來說,可能以為撿了便宜,但因礦工費而入不敷出
  • gas 使用相對少

    • 上鏈的手續費才不用太高,1inch 針對訂單有做拆單與路由,gas 使用上會較高,Matcha 反而在這塊上優化較多,手續費相對低

合約設計

  • 支持各類用戶錢包
    • EOA 錢包
    • 智能合約錢包(例如: Argent, Gnosis Safe)
  • 支持 EIP-712 規範的結構化資料驗簽
    • 讓使用者簽名時,可以識別並確認簽署的消息
  • 支持 ERC-1271 簽名驗證
    • 讓智能合約可以驗證其他智能合約的簽名
  • 支持 EOA 簽名驗證
    • 常見的 ethsign 簽名
  • 支持 ETH/WETH 自動轉換
    • 許多 DApp 利用 WETH 的 ERC-20 標準進行代幣交換,而為了讓用戶無需事先兌換 WETH,透過 wrap 協助用戶自動將 ETH 轉換成 WETH,同理,需要轉回 ETH 亦然
  • 支持代幣交換
    • 包含 Token/Token,Token/ETH,ETH/Token
  • 支持 meta-transaction
    • 支持元交易,讓用戶無需持有 Ether 也能夠進行交易。另一方面,透過元交易,用戶無需自行處理交易上鏈,將委由 Tokenlon 的 relayer 來保證上鏈
  • 支持 permanent allowanceTarget
    • 用戶通過授權 allowanceTarget 合約來委派代幣轉移,方便用戶無需針對每個第三方合約再做授權,節省用戶授權多個合約的次數
  • 支持緊急逃生艙
    • 當第三方合約應用發生問題,或是想緊急中止 Tokenlon 合約的功能運作,可通過 UserProxy 指定關閉 AMM 或 PMM 的業務
  • 支持 approved transfer 的信任模型
    • 由於用戶委派授權給 Tokenlon,故用戶不需預先存錢於合約內,信任模型上可透過用戶的消息驗簽後,由合約對用戶帳戶進行扣款
  • 支持 AMM 聚合器
    • 實現呼叫第三方 AMM 代幣兌換的功能,具備聚合多個 AMM 的能力
  • 支持 PMM 聚合器
    • 提供中心化市場的流動性橋接,允許不同做市商報價,以進行代幣兌換
  • 支持手續費收取
    • 針對協助用戶訂單的上鏈,將以用戶的換回代幣作為部分手續費,來支付礦工費與平台手續費
  • 支持合約擴展能力
    • 實現可升級合約,具備擴展新業務的能力
  • 支持手續費回購 LON 代幣
    • 透過 Tokenlon 合約收取的用戶手續費,會沈澱在合約中,可被 LON 的回購合約提領出

後端設計

了解 Tokenlon 想要提供的功能與合約設計後,後端要有相對應的工程來處理,待續,這部分因為支持 relayer 的特性,而有不同的思維與設計

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment