Vietnamese translated content
Thiết lập môi trường phát triển
Trong bài viết này, chúng ta sẽ điểm qua quy trình thiết lập môi trường phát triển trọn vẹn dành cho việc lập trình trên hệ sinh thái TON. Những công cụ sau đây sẽ được thảo luận:
TON binaries (
lite-client
,tonlib
,func
,fift
,...
)toncli
ton-contract-executor
tonstarter-contracts
MyLocalTON
TON Binaries
LƯU Ý: Việc hoàn thành bước này là cần thiết cho việc lập trình trên chuỗi khối TON.
Để lập trình và tương tác với chuỗi khối TON, bạn sẽ cần binaries cần thiết cho các trình biên dịch (compilers), các máy trạm (clients), các nút (nodes), ... . Có hai lựa chọn để lấy các hệ nhị phân này:
Biên dịch từ mã nguồn
Lấy các binaries từ các bản Auto Builds
Chúng ta cần phải đi tiếp với lựa chọn đầu vì các bản Builds tự động chưa khả dụng cho nhánh mục tiêu của mình. Còn nữa, TON Binaries chính thức có thể được tải về từ kho lưu trữ Auto Builds của ton. Nhưng chúng ta sẽ dùng một bản phân nhánh (fork) của TON vì nó cung cấp khả năng kiểm thử khi cần sau này. Để bắt đầu, làm theo những bước sau:
Cài đặt phiên bản mới nhất của:
make
cmake >= 3.0.2
g++
hayclang
(hoặc một trình biên dịch tương thích với C++ 14 khác)OpenSSL (với C Headers) >= 1.1.1
Nhân bản (clone) SpyChesses's TON và chuyển qua nhánh
toncli-local
:git clone https://github.com/SpyCheese/ton git checkout toncli-local
Tạo một thư mục xây dựng ở nơi tùy ý, chúng ta sẽ nhắc đến nó dưới dạng
<ton-build>
. Giả sử bạn có nhân bản củaton
trong<ton-rep>
, trong giao diện terminal:cd <ton-build> cmake <ton-rep>
Build từng mục tiêu:
cmake --build . --target lite-client cmake --build . --target func cmake --build . --target fift
Các bước này sẽ mất một khoảng thời gian, hãy đợi cho đến khi chúng hoàn thành. Lúc này các binaries sẽ khả dụng trong:
fift: <ton-build>/crypto/fift func: <ton-build>/crypto/func lite-client: <ton-build>/lite-client/lite-client
Bạn có thể sao chép chúng tới thư mục đặc biệt và thêm chúng vào
PATH
. 6. TON Binaries đã được tạo dựng và đang sẵn sàng hoạt động!
toncli
toncli
là một cli (Command-line interface - Giao diện dòng lệnh) đa nền tảng cho TON, nó giúp thao tác và tương tác hợp đồng thông minh với chuỗi khối trở nên dễ dàng hơn nhiều.
Chúng ta sẽ dùng một bản phân nhánh (fork) của toncli
có kèm theo một bộ khung kiểm thử mới nên vì thế nó cũng cần bản phân nhánh của TON binaries. Để cài đặt bạn phải theo các bước sau đây:
Đảm bảo rằng bạn đã hoàn thành phần
TON Binaries
ở trên.Cài đặt python(
>=3.9
) từ trang web chính thức lên hệ thống của bạn.
Lưu ý 1: Không sử dụng phiên bản từ cửa hàng Microsoft nếu bạn đang dùng windows.
Lưu ý 2: Chắc chắn rằng bạn đã thêm python vào phần
PATH
(trên windows hãy chọn đánh dấu vào lựa chọnAdd Python 3.xx to PATH
)
Cài đặt
toncli
bằng lệnh này:git clone https://github.com/AminRezaei0x443/toncli cd toncli git checkout dev python setup.py develop
Lưu ý: Nếu bạn nhìn thấy
WARNING: The script toncli is installed in '.../Python/3.X/bin' which is not on PATH.
Thì bạn hãy thêm đường dẫn được nhắc đến vào biến môi trườngPATH
của bạn
Đi tới thư mục của TON binaries và mở terminal trong thư mục đó. Sau đó, chạy lệnh
toncli
vào terminal. Bạn sẽ thấy nó tự động phát hiện các binaries và thiết lập chúng. Nếu vì bất kỳ lý do gì nó không tìm thấy các binaries, bạn chỉ cần cung cấp đường dẫn tóm tắt của các binaries nếu nó cần. Bạn sẽ thấy đầu ra hiển thị như thế này khi các binaries được phát hiện thành công:Như bạn thấy đấy, toncli đi kèm theo nhiều câu lệnh giúp cho quá trình phát triển và tương tác của hợp đồng thông minh. Các câu lệnh đều có hướng dẫn kĩ lưỡng nhưng chúng ta sẽ điểm qua ứng dụng của chúng tại đây. Thiết lập một dự án Để thiết lập một dự án có thể sử dụng lệnh
start
để tạo mới dự án từ dự án mẫu. Hiện tại có 4 lựa chọn:wallet
,external_data
,external_code
, vàsimple_storage
. Chúng ta đi tiếp tới lựa chọnsimple_storage
:toncli start simple_storage
Bạn có thể xem cách mà hợp đồng đã được tích hợp vào
simple_storage/func/
và thư mục kiểm thử được tích hợp vàosimple_storage/tests/
. Tệp yaml của dự án Tệpproject.yaml
chứa cấu trúc và dữ liệu chi tiết của dự án. Bạn có thể định nghĩa hợp đồng với các file data cell/fift của nó, các hợp đồng func, và các tệp kiểm thử tại đây để toncli có thể nhận diện và sử dụng chúng. Các hợp đồng kiểm thử Kiểm thử là cần thiết trong quá trình phát triển hợp đồng giúp chắc chắn sự an toàn của hợp đồng và ngăn những hành vi không ngờ tới. Để chạy kiểm thử, làm như sau:toncli run_tests
Lệnh này chạy tất cả các trường hợp kiểm thử đã được định nghĩa trong tệp
project.yaml
cho hợp đồng.Bạn có thể kiểm thử một hợp đồng đặc biệt bằng cách thêm tham số
-c
toncli run_tests -c contract
Triển khai hợp đồng Bạn có thể triển khai hợp đồng lên mạng chính hoặc mạng thử nghiệm một cách dễ dàng thông qua lệnh này:
toncli deploy -n testnet -wc 0
Nó sẽ tạo một ví mới cho bạn nếu chưa có và sẽ yêu cầu bạn gửi một số TON cho nó để trả phí triển khai hợp đồng. Bạn có thể xem mô tả chi tiết hơn tại toncli's docs.
ton-contract-executor
Lưu ý: Thư viện này dựa trên
ton-compiler
chỉ hỗ trợmacOS
, tại thời điểm bài viết này được xuất bản. Nên nếu bạn không phải là người dùng macOS thì bạn sẽ không thể sử dụng thư viện này cho đến khi nó được hỗ trợ.
ton-contract-executor
cho phép bạn chạy TVM cục bộ và thực thi hợp đồng, giúp việc ghi, gỡ lỗi và kiểm thử toàn bộ hợp đồng của bạn trước khi đưa chúng lên mạng dễ dàng hơn.
Để thiết lập, bạn sẽ cần:
Cài đặt
Node.js
Cài đặt quản lý gói
yarn
npm install --global yarn
Tạo một thư mục đại diện cho dự án, và khởi tạo nó:
yarn init
Cài đặt
ton-contract-executor
vàton
:
yarn add ton-contract-executor
yarn add ton
Tạo tệp
contract.js
với nội dung:
let {SmartContract} = require("ton-contract-executor");
let { Cell } = require("ton");
async function main() {
const source = `
() main() {
;; noop
}
int sum(int a, int b) method_id {
return a + b;
}
`
let contract = await SmartContract.fromFuncSource(source, new Cell())
let res = await contract.invokeGetMethod('sum', [
// argument a
{ type: 'int', value: '1' },
// argument b
{ type: 'int', value: '2' },
])
console.log('1 + 2 = ', res.result[0])
};
main().then(()=>{});
Sau khi đã thực thi thành công, bạn sẽ thấy console log với kết quả chính xác. Đây chỉ là một ví dụ mẫu đơn giản, bạn có thể lập trình đoạn mã để đọc code từ các tệp hợp đồng, và thực thi cũng như kiểm thử những phương thức của chúng. Một số ví dụ khác cũng đang có tại kho lưu trữ chính.
tonstarter-contracts
Dự án này là một template mẫu mở đầu cho việc phát triển ứng dụng phi tập trung (dApps) trên TON. Nó hiện đang chứa code cho việc lập trình hợp đồng nhưng nó cũng sẽ chứa giao diện và bot telegram mẫu cho việc tương tác với hợp đồng trong tương lai. Để bắt đầu:
Cài đặt phiên bản mới của
Node.js
.Đảm bảo rằng bạn đã hoàn thành bước
TON Binaries
và thêm binaries vào biến môi trườngPATH
. (fift
vàfunc
phải được nhận diện)Nhân bản kho lưu trữ:
git clone https://github.com/ton-defi-org/tonstarter-contracts
Cài đặt dependencies:
npm install
Bạn đã hoàn thành!
Viết Code
Hợp đồng nằm ở contracts/
, và hành vi của mỗi thư mục con và tiện ích mở rộng trong cấu trúc thư mục được sắp xếp như sau:
contracts/*.fc
: hợp đồng gốc đơn lẻcontracts/imports/*.fc
: các nguồn nhập được chia sẻ giữa các hợp đồng với nhaucontracts/imports/<contract>/*.fc
: nguồn nhập dành riêng cho hợp đồng - không chia sẻcontracts/<contract>.tld
: TL-B Schema tùy chọn cho dữ liệu and tin nhắn opscontracts/<contract>.ts
: tệp typescript tùy chọn dùng để mã hóa dữ liệu và tin nhắn ops
Build Code
Trong kho lưu trữ gốc, chạy lệnh npm run build
để build hợp đồng. Nếu có lỗi, chúng sẽ được hiển thị, nếu không thì chúng ta có những tệp như sau:
<contract>.merged.fc
- mã nguồn FunC với tất cả nguồn nhập đã được gộp và nén lại.<contract>.fif
- hợp đồng được biên dịch dưới dạng Fift assembly<contract>.cell
- binary code cell của hợp đồng đã được biên dịch (dành cho việc triển khai)
Kiểm thử
Bạn cần phải build code trước khi đến với phần kiểm thử. Chạy kiểm thử bằng cách nhập npm run test
. Những trường hợp kiểm thử sẽ được khởi chạy bằng TVM thông qua ton-contract-executor
.
Lưu ý: Như đã đề cập trước đó, tại thời điểm bài viết này diễn ra,
ton-contract-executor
chỉ chạy trên nền tảng macOS vì dependency của nó. Nên là, bạn sẽ không thể chạy kiểm thử nếu bạn không dùng macOS
Triển khai
Trước tiên, hãy build hợp đồng. Mỗi hợp đồng cần triển khai nên có một đoạn mã tại build/<contract>.deploy.ts
để trả về dữ liệu cell khởi tạo của nó.
Ví triển khai có thể được cấu hình bởi biến DEPLOYER-MNEMONIC
trong tệp .env
. Bạn nên cung cấp 24 từ bí mật trong tệp .env
như sau:
DEPLOYER_MNEMONIC="tumble degree cousin sand ..."
Chạy lệnh npm run deploy
để triển khai lên mạng chính và npm run deploy:testnet
cho mạng thử nghiệm, sau đó theo dõi hướng dẫn trên màn hình.
Thông tin chi tiết có tại kho lưu trữ chính.
MyLocalTON
MyLocalTON
là một chuỗi khối TON đa nền tảng. Nó là một ứng dụng có định dạng .jar
.
Nó được sử dụng để đơn giản hóa việc kiểm thử và kiểm tra trạng thái của chuỗi khối mà không cần phải sử dụng và triển khai lên mạng thử nghiệm
.
Để thiết lập MylocalTON
:
Đảm bảo rằng bạn đã cài đặt OpenJDK17, nếu đã hoàn thành xin vui lòng bỏ qua bước này.
Đây là hướng dẫn cài đặt OpenJDK nếu bạn cần:
Đi tới phần Auto Builds của
MylocalTON
, mở build thành công mới nhất lên và tảiMylocalTON
từ phần artifacts được sinh ra.Giải nén tệp đã tải và thực thi nó với Java:
java -jar MyLocalTon.jar
Bạn sẽ thấy màn hình như dưới đây, khởi tạo chuỗi khối TON sẽ tốn một khoảng thời gian:
Sau khi cài đặt thành công, chuỗi khối sẽ sẵn sàng:
Last updated