xChar

1586539766855
有很多人覺得在加密貨幣交易所工作就需要知道Web3和Blockchain的知識,這個算是對也是不對,以後端來說在加密貨幣交易所中分為很多團隊

  • 交易所網站API
  • 交易引擎 (交易搓合、Earn 計算等)
  • Payment API (錢包相關的API)
  • Wallet (區塊鏈相關的系統)

會需要知道web3, blockchain知識的會是Wallet部分,其他部分則是需要知道交易所交易的知識等,滿多交易所不一定會自己開發與維護Wallet,而是使用第三方的服務像是Cybavo, Fireblocks等。

而我在交易所是擔任Wallet的後端工程師,我們主要的工作是

  • 開發wallet相關業務邏輯與資產管理功能
  • 研究與整合新的blockchain network(包含節點運行與維護)
  • blockchain network 更新驗證和日常的token listing

我的一天基本上是

  • 早上,我開發的Blockchain release checker 會將所有公司支援的Blockchain最新release發送到slack channel,如果有fork, hardfork或是upgrade會標記出來,進公司後會檢查release時間在24小時內的release內容,是否有需要更新testnet or mainnet,如果有的話需要在testnet節點上更新並測試所有wallet 相關功能後在通知infa為更新做準備;有的blockchain的更新資訊不會放在release中,可能會發佈在他們的blog或是telegram validators group中,要額外去注意。
  • 結束檢查更新後會開始根據Jira上的ticket優先度來做開發,主要的開發內容上面有提到,可能是routine的token listing、新的blockchain整合、業務邏輯開發、refactor系統等。
  • 下午我通常接續上午的開發工作或者幫忙Code review,最近我們開始在提交MR時會先給同事review後再提交上去,Code review 會加快自身成長,在review時常常會思考這樣的寫法有沒有更好的方式或是有沒有隱藏的風險以及整體架構具不具有彈性,可以學習到其他人的寫法架構,也可以和同事交流。

這個基本上是正常情況下的一天,實際上會有許多狀況需要處理

  • Mainnet / Testnet Fullnode out of sync
  • Mainnet / Testnet Fullnode RPC error
  • 重大緊急fullnode 更新
  • Blockchain 更新fee role or 停機(去年的Solana(誤)

雖然我們的系統是使用JAVA建構的,但我們的工作需要快速查看不同語言的程式碼,例如我們在整合blockchain時,如果該blockchain沒有提供JAVA SDK時需要研究他們其他語言的SDK,例如Golang、Rust、Python、C++等,在porting成JAVA Lib,以及如何在blockchain上部署合約,以EVM來說我們有完整的SOP,但非EVM時就需要去研究如何發行合約與操作合約,例如Near, Elrond(現在是MultiversX)TON

這是一個有著不斷變化和新挑戰的工作,除了以JAVA開發系統之外,還可以接觸許多blockchain的特性或是技術,加上blockchain有很多doc是舊的或是不完整,在整合時遇到問題時需要到Discord或是telegram中發問,有遇過很熱心的官方工程師幫忙解決問題,也有跟SDK開發者請教許多鏈上的問題或是在github repo上提交issue。

在這邊工作的經驗不只對我的Software development有所精進也對於開發Web3 service 有所幫助。

Loading comments...