搭建開發(fā)環(huán)境

Hacker??Dōjō?Web3前沿技術(shù) workshop文稿
研究種類:TONFun|翻譯—TON 社區(qū)開發(fā)專欄Blog內(nèi)容漢化
資助金額:120 USDT
Bounty鏈接:https://dorahacks.io/daobounty/247
本項目由Hacker?Dōjō?資助,文章轉(zhuǎn)載請注明出處。
??學(xué)習(xí)量子計算、密碼學(xué)、Space等Web3前沿技術(shù)
??認領(lǐng)Bounty,賺取賞金
??參與Hackathon,獲得資助
更多Web3精彩技術(shù)分享盡在Dōjō??
WeChat: @HackerDojo0

搭建開發(fā)環(huán)境

在這篇文章中,我們將介紹如何在TON生態(tài)系統(tǒng)搭建完整的開發(fā)環(huán)境。以下幾個工具將被討論到:
TON二進制文件(binaries )(
lite-client
,?tonlib
,?func
,?fift
,?...
)toncli
ton-contract-executor
tonstarter-contracts
MyLocalTON
TON二進制文件

注意:完成這一步,對于在TON區(qū)塊鏈上進行開發(fā)來說非常重要。
要在TON區(qū)塊鏈上開發(fā)和交互,你需要編譯器、客戶端、節(jié)點的二進制文件,有兩種方式可以獲得:
從源代碼編譯
從Auto Builds獲得二進制文件
我們需要采取前一種方式,因為Auto Builds不適用于我們的目標分支。另外,官方TON二進制文件可以從ton倉庫的Auto Builds下載。然而,我們將使用TON的分叉鏈,來提供后續(xù)所需的測試功能。請按照以下步驟操作:
1. 安裝最新版本的:
make
cmake >= 3.0.2
g++
?or?clang
?(or another C++ 14 compatible compiler)
OpenSSL (with C Headers) >= 1.1.1
2.復(fù)制[SpyChesses's TON](<https://github.com/SpyCheese/ton/actions>)并切換? 到?toncli-local
?分支:
3. 在任意位置創(chuàng)建一個生成目錄,我們可以將其命名為?<ton-build>
。假定你已經(jīng)將 ton
?復(fù)制到?<ton-rep>
中,在終端執(zhí)行以下命令:
4. 生成每個目標
5.這些步驟將會花費一些時間,等完成后,二進制文件將會在以下目錄中:
? ?你可以將它們復(fù)制到特定的目錄并將它們增加到你的?PATH
。
?6. TON二進制文件創(chuàng)建完成。
toncli

[toncli](<https://github.com/disintar/toncli>)
?是TON的跨平臺命令行界面,它讓區(qū)塊鏈的智能合約操作和交互變得更簡單。
我們將使用一個帶有新測試框架的?toncli
?分叉版,因此也需要分叉的TON二進制文件。請按照以下步驟安裝:
確定完成了?
TON Binaries
?部分的設(shè)置。從官方網(wǎng)站安裝python(
>=3.9
)到你的系統(tǒng)。
注意1:如果你使用windows系統(tǒng),請不要使用Microsoft商店版本。
注意2:確定將python添加到
PATH
?(windows上只需選中?Add Python 3.xx to PATH
?選項即可)
? 3.使用以下命令安裝?toncli
?:
注意:如果你看到?
WARNING: The script toncli is installed in '.../Python/3.X/bin' which is not on PATH
提示,需要將提示中的地址增加到PATH
?環(huán)境變量中。
4. 進入到TON二進制文件的文件夾中,打開終端,然后在其中運行?toncli
?命令。你可以看到它會自動檢測二進制文件并設(shè)置它們。如果因為任何原因無法找到二進制文件,只需按要求提供二進制文件的抽象路徑即可。如果檢測成功,你將看到以下輸出:

正如你看到的,toncli帶有多個命令,可以幫助智能合約的開發(fā)和交互。這些命令都有很好的文檔說明,這里我們將介紹它們的用法。
配置項目

要配置一個項目,我們可以使用?start
?命令從示例項目創(chuàng)建一個新項目。目前有4個選項:?wallet
,external_data
,external_code
和?simple_storage
。我們將使用?simple_storage
?選項:
你可以看到合約是怎樣部署在?simple_storage/func/
?中的,也可以看到測試是怎樣部署在?simple_storage/tests/
中的。
項目yaml文件

project.yaml
?文件包含項目的結(jié)構(gòu)和元數(shù)據(jù)。你可以在其中指定合約數(shù)據(jù)單元/fift文件、功能合約和測試,以便toncli檢測并使用它們。
測試合約

測試在合約開發(fā)過程中非常重要,它可以確保合約的安全性,防止意外事件發(fā)生。運行測試:
這個命令會運行?project.yaml
?文件中指定合約的所有測試。

你可以通過傳遞?-c
?參數(shù)來測試某個特定的合約。
部署合約

你可以使用以下命令將合約部署到主網(wǎng)或測試網(wǎng):
如果你沒有錢包,它將為你創(chuàng)建一個,并要求你發(fā)送一些TON到錢包中,以便支付部署合約的費用。
更多詳細說明請查閱 [toncli's docs](<https://github.com/disintar/toncli/tree/master/docs>)。
ton-contract-executor

注意:這個庫依賴于?
ton-compiler
?,該編譯器在撰寫本文時只支持?macOS
,如果你不是macOS用戶,你將無法使用這個庫,直到支持被添加。
ton-contract-executor
?允許你在本地運行TVM 和執(zhí)行合約,可以幫助你在將合約部署到網(wǎng)絡(luò)之前編寫、調(diào)試和全面測試合約。
你可以按以下步驟設(shè)置:
1. 安裝?[Node.js](<https://nodejs.org/en/download/>)
2. 安裝?yarn
?包管理器:
3. 創(chuàng)建一個代表你的項目根目錄的目錄,并初始化:
4. 安裝?ton-contract-executor
?和?ton
:
5. 創(chuàng)建內(nèi)容文件?contract.js
?:
6. 成功執(zhí)行后,你將看到結(jié)果正確的控制臺日志。
這僅僅是一個基礎(chǔ)的示例,你可以開發(fā)腳本來讀取合約文件的代碼,執(zhí)行并測試其中的方法。更多示例可以查閱?主資源庫。
tonstarter-contracts

這個項目是在TON上開發(fā)aApp的起始模版,它目前包含了合約開發(fā)的代碼,未來還將包含與合約交互的前端和telegram機器人模版。
按以下步驟設(shè)置:
1. 安裝最新版本的?[Node.js](<https://nodejs.org/en/download/>)
。
2. 確定已完成?TON Binaries
?步驟并將二進制文件增加到?PATH
?環(huán)境變量。(fift
?和?func
?必須可以被檢測到)
3. 復(fù)制資源庫:
4. 安裝依賴包:
5. 配置完成。
寫代碼

合約存放在?contracts/
目錄下,每個子文件夾的行為以及文件夾的擴展結(jié)構(gòu)如下:
contracts/*.fc
:獨立的根合約contracts/imports/*.fc
:合約間共享導(dǎo)入文件contracts/imports/<contract>/*.fc
:特定合約導(dǎo)入——非共享contracts/<contract>.tld
:用于數(shù)據(jù)和消息操作的可選?TL-B?方案contracts/<contract>.ts
:編碼數(shù)據(jù)和消息操作的可選typescript文件
構(gòu)建代碼

在資源根目錄下運行?npm run build
?來創(chuàng)建合約,如果出現(xiàn)任何錯誤,它們都將顯示出來;如果沒有出現(xiàn)錯誤,生成的文件如下所示:
<contract>.merged.fc
?- 合并并扁平化所有導(dǎo)入的 FunC 源代碼文件<contract>.fif
?- 按Fift匯編文件編譯的合約<contract>.cell
?- 編譯合約的二進制代碼單元(用于部署)
測試

在進行測試之前,你必須先構(gòu)建代碼。使用?npm run test
運行測試,該測試是由TVM使用?ton-contract-executor
運行的。
注意:如前所述,在撰寫本文時,?
ton-contract-executor
?由于其依賴性只能在macOS上運行,因此如果您不使用macOS將無法運行測試。
部署

首先,先創(chuàng)建合約,每個要部署的合約應(yīng)該要有一個?build/<contract>.deploy.ts
?的腳本來返回它的初始數(shù)據(jù)單元。
可以通過在?.env
?文件中的?DEPLOYER_MNEMONIC
?變量來配置部署錢包,你要在?.env
?中提供24個助記詞,比如:
運行?npm run deploy
?在主網(wǎng)部署,運行?npm run deploy:testnet
?在測試網(wǎng)部署,然后按照屏幕上的提示進行操作。
更多細節(jié)可以查閱?主資源庫(<https://github.com/ton-defi-org/tonstarter-contracts>)。
MyLocalTON

MyLocalTON
?是一個跨平臺的本地TON區(qū)塊鏈。它以?.jar
?文件的形式作為獨立應(yīng)用程序使用。
它可以用于簡化測試和檢查區(qū)塊鏈的狀態(tài),無需使用和部署到?testnet
。
設(shè)置?MyLocalTON
:
1. 確保安裝了OpenJDK17,如果你已經(jīng)安裝了,請?zhí)^此步驟。
如有需要,以下是安裝OpenJDK的一些指導(dǎo):
Ubuntu(<https://techviewleo.com/install-java-openjdk-on-ubuntu-linux/>)
Windows(<https://java.tutorials24x7.com/blog/how-to-install-openjdk-17-on-windows>)
MacOS(<https://knasmueller.net/how-to-install-java-openjdk-17-on-macos-big-sur>)
2. 進入?MyLocalTON
里的?Auto Builds(<https://github.com/neodiX42/MyLocalTon/actions>),打開最新成功構(gòu)建的代碼,從生成的構(gòu)建文件中下載?MyLocalTon
?。


3. 解壓下載的文件并用java運行:
4. 你將看到如下屏幕,它將花費一點時間來初始化TON區(qū)塊鏈:

5. 成功初始化之后,區(qū)塊鏈就準備好了:


關(guān)于Hacker Dōjō?
由Hacker共建的加密、Web3前沿技術(shù)開源知識社區(qū)。Dōjō 會以直播/音頻/文字等形式定期組織分享session, 分享主題主要覆蓋L1和L2的共識算法,架構(gòu),GitHub repo相關(guān)內(nèi)容,包括不限于以下話題:Scroll / Polygon zkEVM、 Eigen的混合證明系統(tǒng)、Starkware、azTec、 Optimism、Zecrey、Aptos、 Move、密碼學(xué)(零知識證明、公鑰加密、哈希函數(shù)、格密碼) 、 分布式系統(tǒng)、 以太坊協(xié)議棧、 量子計算和量子信息、衛(wèi)星通信系統(tǒng)和航天器系統(tǒng)設(shè)計等。
?Bounty詳情及認領(lǐng)進度詳情:https://innovative-laser af4.notion.site/174922df15884848b6ac8b57cb4f2fae?v=612e13dc6b9d44dd8197f755abb9fe9c
?加入 Dōjō 中文社區(qū)微信聯(lián)系:@HackerDojo0
有關(guān)DoraHacks
DoraHacks 是一個全球范圍內(nèi)的極客運動,全球黑客馬拉松組織者,也是全球最活躍的多鏈 Web3 開發(fā)者平臺之一。DoraHacks.io平臺使得世界各地的Hacker和開源開發(fā)者可以參與黑客馬拉松、Bounty、Grant、Grant DAO,以及公共物品質(zhì)押等加密原生協(xié)議和基礎(chǔ)設(shè)施進行協(xié)作并獲得資助。到目前為止,DoraHacks 社區(qū)的 4000 多個項目已經(jīng)獲得了來自全球行業(yè)支持者超過 3000 萬美元的資助。大量開源社區(qū)、DAO 和 超過50個主要區(qū)塊鏈生態(tài)系統(tǒng)正在積極使用 Dora 的基礎(chǔ)設(shè)(DoraHacks.io)進行開源融資和社區(qū)治理。
官網(wǎng):https://dorahacks.io/