Nếu bạn chưa quen với việc phát triển chuỗi khối và không biết bắt đầu từ đâu hoặc nếu bạn chỉ muốn hiểu cách triển khai và tương tác với các hợp đồng thông minh, thì hướng dẫn này là dành cho bạn. Chúng tôi sẽ hướng dẫn tạo và triển khai hợp đồng thông minh đơn giản trên mạng thử nghiệm Ropsten bằng ví ảo [
MetaMask], Solidity, Hardhat và Alchemy [đừng lo lắng nếu bạn chưa hiểu bất kỳ điều gì trong số này có nghĩa là gì, chúng tôi sẽ giải thích về nó]Trong phần 2 của hướng dẫn này, chúng ta sẽ tìm hiểu cách chúng ta có thể tương tác với hợp đồng thông minh của mình sau khi nó được triển khai và trong phần 3, chúng ta sẽ đề cập đến cách xuất bản nó trên Etherscan
Nếu bạn có bất kỳ câu hỏi nào, vui lòng liên hệ trong Alchemy Discord
Bước 1. Kết nối với mạng Ethereum
Có nhiều cách để thực hiện yêu cầu đối với chuỗi Ethereum. Để đơn giản, chúng tôi sẽ sử dụng tài khoản miễn phí trên Alchemy, nền tảng dành cho nhà phát triển chuỗi khối và API cho phép chúng tôi giao tiếp với chuỗi Ethereum mà không cần phải chạy các nút của riêng mình. Nền tảng này cũng có các công cụ dành cho nhà phát triển để theo dõi và phân tích mà chúng tôi sẽ tận dụng trong hướng dẫn này để hiểu những gì đang diễn ra trong quá trình triển khai hợp đồng thông minh của chúng tôi. Nếu chưa có tài khoản Alchemy, bạn có thể đăng ký miễn phí tại đây
Bước 2. Tạo ứng dụng của bạn [và khóa API]
Khi bạn đã tạo tài khoản Alchemy, bạn có thể tạo khóa API bằng cách tạo ứng dụng. Điều này sẽ cho phép chúng tôi thực hiện các yêu cầu đối với mạng thử nghiệm Ropsten. Nếu bạn không quen thuộc với testnet, hãy xem
trang này- Điều hướng đến trang “Tạo ứng dụng” trong Bảng điều khiển Alchemy của bạn bằng cách di chuột qua “Ứng dụng” trong thanh điều hướng và nhấp vào “Tạo ứng dụng”
- Đặt tên cho ứng dụng của bạn là “Xin chào thế giới”, đưa ra một mô tả ngắn, chọn “Dàn dựng” cho Môi trường [được sử dụng để ghi sổ ứng dụng của bạn] và chọn “Ropsten” cho mạng của bạn
- Nhấp vào "Tạo ứng dụng" và thế là xong. Ứng dụng của bạn sẽ xuất hiện trong bảng bên dưới
Bước 3. Tạo tài khoản Ethereum [địa chỉ]
Chúng tôi cần một tài khoản Ethereum để gửi và nhận giao dịch. Đối với hướng dẫn này, chúng tôi sẽ sử dụng MetaMask, một ví ảo trong trình duyệt được sử dụng để quản lý địa chỉ tài khoản Ethereum của bạn. Thêm về giao dịch
Bạn có thể tải và tạo tài khoản MetaMask miễn phí tại đây. Khi bạn đang tạo tài khoản hoặc nếu bạn đã có tài khoản, hãy đảm bảo chuyển sang “Mạng thử nghiệm Ropsten” ở phía trên bên phải [để chúng tôi không xử lý tiền thật]
Bước 4. Thêm ether từ vòi
Để triển khai hợp đồng thông minh của chúng tôi vào mạng thử nghiệm, chúng tôi sẽ cần một số ETH giả. Để nhận ETH, bạn có thể truy cập vòi Ropsten và nhập địa chỉ tài khoản Ropsten của mình, sau đó nhấp vào “Gửi Ropsten ETH. ” Có thể mất một chút thời gian để nhận được ETH giả của bạn do lưu lượng truy cập mạng. Bạn sẽ thấy ETH trong tài khoản MetaMask của mình ngay sau đó
Bước 5. Kiểm tra số dư của bạn
Để kiểm tra kỹ xem số dư của chúng ta có ở đó không, hãy tạo yêu cầu eth_getBalance bằng công cụ soạn thảo của Alchemy. Điều này sẽ trả lại số lượng ETH trong ví của chúng tôi. Sau khi bạn nhập địa chỉ tài khoản MetaMask của mình và nhấp vào “Gửi yêu cầu”, bạn sẽ thấy phản hồi như thế này
1{ "jsonrpc": "2.0", "id": 0, "result": "0x2B5E3AF16B1880000" }
2
Sao chép
GHI CHÚ. Kết quả này là ở wei chứ không phải ETH. Wei được sử dụng làm mệnh giá nhỏ nhất của ether. Việc chuyển đổi từ wei sang ETH là. 1 eth = 1018 wei. Vì vậy, nếu chúng tôi chuyển đổi 0x2B5E3AF16B1880000 thành số thập phân, chúng tôi nhận được 5*10¹⁸ tương đương với 5 ETH
Phù. Tiền giả của chúng tôi có hết
.
Bước 6. Khởi tạo dự án của chúng tôi
Trước tiên, chúng tôi sẽ cần tạo một thư mục cho dự án của bạn. Điều hướng đến dòng lệnh của bạn và gõ
1mkdir hello-world
2cd hello-world
3
Bây giờ chúng tôi đang ở trong thư mục dự án của mình, chúng tôi sẽ sử dụng
9 để khởi tạo dự án. Nếu bạn chưa cài đặt npm, hãy làm theo các hướng dẫn sau [chúng tôi cũng sẽ cần Node. js vì vậy hãy tải xuống. ]1mkdir hello-world
2cd hello-world
3
1npm init
2
Cách bạn trả lời các câu hỏi cài đặt không thực sự quan trọng, đây là cách chúng tôi đã thực hiện để tham khảo
1package name: [hello-world]
2version: [1.0.0]
3description: hello world smart contract
4entry point: [index.js]
5test command:
6git repository:
7keywords:
8author:
9license: [ISC]
10About to write to /Users/.../.../.../hello-world/package.json:
11
12{
13 "name": "hello-world",
14 "version": "1.0.0",
15 "description": "hello world smart contract",
16 "main": "index.js",
17 "scripts": {
18 "test": "echo \\"Error: no test specified\\" && exit 1"
19 },
20 "author": "",
21 "license": "ISC"
22}
23
Hiện tất cả
Phê duyệt gói. json và chúng ta đã sẵn sàng
Bước 7. Tải xuống Hardhat
Hardhat là một môi trường phát triển để biên dịch, triển khai, kiểm tra và gỡ lỗi phần mềm Ethereum của bạn. Nó giúp các nhà phát triển khi xây dựng các hợp đồng thông minh và dapp cục bộ trước khi triển khai vào chuỗi trực tiếp
Bên trong dự án
0 của chúng tôi1npm init
2
1npm install --save-dev hardhat
2
Kiểm tra trang này để biết thêm chi tiết về hướng dẫn cài đặt
Bước 8. Tạo dự án Hardhat
Bên trong thư mục dự án của chúng tôi chạy
1npx hardhat
2
Sau đó, bạn sẽ thấy một thông báo chào mừng và tùy chọn để chọn những gì bạn muốn làm. Chọn “tạo một hardhat trống. cấu hình. js”
________số 8
Thao tác này sẽ tạo tệp
1 cho chúng tôi, đây là nơi chúng tôi sẽ chỉ định tất cả các thiết lập cho dự án của mình [ở bước 13]1npm init
2
Bước 9. Thêm thư mục dự án
Để giữ cho dự án của chúng tôi được tổ chức, chúng tôi sẽ tạo hai thư mục mới. Điều hướng đến thư mục gốc của dự án trong dòng lệnh của bạn và gõ
01mkdir hello-world
2cd hello-world
3
2 là nơi chúng tôi sẽ lưu giữ tệp mã hợp đồng thông minh hello world của chúng tôi1npm init
2
3 là nơi chúng tôi sẽ giữ các tập lệnh để triển khai và tương tác với hợp đồng của chúng tôi1npm init
2
Bước 10. Viết hợp đồng của chúng tôi
Bạn có thể tự hỏi, khi nào thì chúng ta mới viết mã đây??
Mở dự án hello-world trong trình chỉnh sửa yêu thích của bạn [chúng tôi thích VSCode]. Hợp đồng thông minh được viết bằng ngôn ngữ có tên là Solidity, đây là ngôn ngữ mà chúng tôi sẽ sử dụng để viết HelloWorld của mình. sol hợp đồng thông minh.
- Điều hướng đến thư mục “hợp đồng” và tạo một tệp mới có tên HelloWorld. sol
- Dưới đây là một hợp đồng thông minh Hello World mẫu từ Ethereum Foundation mà chúng tôi sẽ sử dụng cho hướng dẫn này. Sao chép và dán nội dung bên dưới vào HelloWorld của bạn. sol và nhớ đọc các nhận xét để hiểu hợp đồng này làm gì
31mkdir hello-world
2cd hello-world
3
Đây là một hợp đồng thông minh siêu đơn giản lưu trữ thông báo khi tạo và có thể được cập nhật bằng cách gọi hàm
41npm init
2
Bước 11. Kết nối MetaMask & Alchemy với dự án của bạn
Chúng tôi đã tạo ví MetaMask, tài khoản Alchemy và viết hợp đồng thông minh của mình, giờ là lúc kết nối ba
Mọi giao dịch được gửi từ ví ảo của bạn đều yêu cầu chữ ký bằng khóa riêng duy nhất của bạn. Để cung cấp cho chương trình của chúng tôi quyền này, chúng tôi có thể lưu trữ khóa riêng của mình [và khóa API Alchemy] một cách an toàn trong tệp môi trường
Để tìm hiểu thêm về cách gửi giao dịch, hãy xem hướng dẫn này về cách gửi giao dịch bằng web3
Đầu tiên, cài đặt gói dotenv trong thư mục dự án của bạn
51mkdir hello-world
2cd hello-world
3
Sau đó, tạo một tệp
5 trong thư mục gốc của dự án của chúng tôi và thêm khóa riêng MetaMask và URL API giả kim HTTP của bạn vào đó1npm init
2
- Thực hiện theo các hướng dẫn sau để xuất khóa riêng của bạn
- Xem bên dưới để nhận URL API Alchemy HTTP
Sao chép URL API giả kim
5 của bạn sẽ trông như thế này1npm init
2
01mkdir hello-world
2cd hello-world
3
Để thực sự kết nối những điều này với mã của chúng tôi, chúng tôi sẽ tham chiếu các biến này trong tệp
1 của chúng tôi ở bước 131npm init
2
Đừng cam kết
5. Vui lòng đảm bảo không bao giờ chia sẻ hoặc tiết lộ tệp1npm init
2
5 của bạn với bất kỳ ai, vì bạn đang làm tổn hại đến bí mật của mình khi làm như vậy. Nếu bạn đang sử dụng kiểm soát phiên bản, hãy thêm1npm init
2
5 của bạn vào tệp gitignore1npm init
2
Bước 12. Cài đặt Ether. js
Ether. js là một thư viện giúp tương tác và thực hiện các yêu cầu tới Ethereum dễ dàng hơn bằng cách gói các phương thức JSON-RPC tiêu chuẩn bằng các phương thức thân thiện với người dùng hơn
Hardhat giúp tích hợp Plugin cực kỳ dễ dàng để có thêm công cụ và chức năng mở rộng. Chúng tôi sẽ tận dụng plugin Ethers để triển khai hợp đồng [Ethers. js có một số phương thức triển khai hợp đồng siêu sạch]
Trong loại thư mục dự án của bạn
11mkdir hello-world
2cd hello-world
3
Chúng tôi cũng sẽ yêu cầu ethers trong
1 của chúng tôi trong bước tiếp theo1npm init
2
Bước 13. Cập nhật mũ cứng. cấu hình. js
Cho đến nay, chúng tôi đã thêm một số phụ thuộc và plugin, bây giờ chúng tôi cần cập nhật
1 để dự án của chúng tôi biết về tất cả chúng1npm init
2
Cập nhật
1 của bạn để trông như thế này1npm init
2
21mkdir hello-world
2cd hello-world
3
Bước 14. Biên dịch hợp đồng của chúng tôi
Để đảm bảo mọi thứ đang hoạt động cho đến nay, hãy biên soạn hợp đồng của chúng tôi. Nhiệm vụ
4 là một trong những nhiệm vụ hardhat được tích hợp sẵn1package name: [hello-world]
2version: [1.0.0]
3description: hello world smart contract
4entry point: [index.js]
5test command:
6git repository:
7keywords:
8author:
9license: [ISC]
10About to write to /Users/.../.../.../hello-world/package.json:
11
12{
13 "name": "hello-world",
14 "version": "1.0.0",
15 "description": "hello world smart contract",
16 "main": "index.js",
17 "scripts": {
18 "test": "echo \\"Error: no test specified\\" && exit 1"
19 },
20 "author": "",
21 "license": "ISC"
22}
23
Hiện tất cả
Từ dòng lệnh chạy
31mkdir hello-world
2cd hello-world
3
Bạn có thể nhận được cảnh báo về
5 , nhưng không cần lo lắng về điều đó — hy vọng mọi thứ khác đều ổn. Nếu không, bạn luôn có thể nhắn tin trong sự bất hòa của Alchemy1package name: [hello-world]
2version: [1.0.0]
3description: hello world smart contract
4entry point: [index.js]
5test command:
6git repository:
7keywords:
8author:
9license: [ISC]
10About to write to /Users/.../.../.../hello-world/package.json:
11
12{
13 "name": "hello-world",
14 "version": "1.0.0",
15 "description": "hello world smart contract",
16 "main": "index.js",
17 "scripts": {
18 "test": "echo \\"Error: no test specified\\" && exit 1"
19 },
20 "author": "",
21 "license": "ISC"
22}
23
Hiện tất cả
Bước 15. Viết kịch bản triển khai của chúng tôi
Bây giờ hợp đồng của chúng tôi đã được viết và tệp cấu hình của chúng tôi đã sẵn sàng hoạt động, đã đến lúc viết tập lệnh triển khai hợp đồng của chúng tôi
Điều hướng đến thư mục
3 và tạo một tệp mới có tên1npm init
2
7 , thêm các nội dung sau vào đó1package name: [hello-world]
2version: [1.0.0]
3description: hello world smart contract
4entry point: [index.js]
5test command:
6git repository:
7keywords:
8author:
9license: [ISC]
10About to write to /Users/.../.../.../hello-world/package.json:
11
12{
13 "name": "hello-world",
14 "version": "1.0.0",
15 "description": "hello world smart contract",
16 "main": "index.js",
17 "scripts": {
18 "test": "echo \\"Error: no test specified\\" && exit 1"
19 },
20 "author": "",
21 "license": "ISC"
22}
23
Hiện tất cả
41mkdir hello-world
2cd hello-world
3
Hardhat thực hiện một công việc tuyệt vời khi giải thích chức năng của từng dòng mã này trong hướng dẫn Hợp đồng của họ, chúng tôi đã áp dụng các giải thích của họ tại đây
51mkdir hello-world
2cd hello-world
3
Một
8 bằng ether. js là một bản tóm tắt được sử dụng để triển khai các hợp đồng thông minh mới, vì vậy,1package name: [hello-world]
2version: [1.0.0]
3description: hello world smart contract
4entry point: [index.js]
5test command:
6git repository:
7keywords:
8author:
9license: [ISC]
10About to write to /Users/.../.../.../hello-world/package.json:
11
12{
13 "name": "hello-world",
14 "version": "1.0.0",
15 "description": "hello world smart contract",
16 "main": "index.js",
17 "scripts": {
18 "test": "echo \\"Error: no test specified\\" && exit 1"
19 },
20 "author": "",
21 "license": "ISC"
22}
23
Hiện tất cả
9 đây là nhà máy sản xuất các phiên bản hợp đồng hello world của chúng tôi. Khi sử dụng plugin1package name: [hello-world]
2version: [1.0.0]
3description: hello world smart contract
4entry point: [index.js]
5test command:
6git repository:
7keywords:
8author:
9license: [ISC]
10About to write to /Users/.../.../.../hello-world/package.json:
11
12{
13 "name": "hello-world",
14 "version": "1.0.0",
15 "description": "hello world smart contract",
16 "main": "index.js",
17 "scripts": {
18 "test": "echo \\"Error: no test specified\\" && exit 1"
19 },
20 "author": "",
21 "license": "ISC"
22}
23
Hiện tất cả
0, phiên bản1npm install --save-dev hardhat
2
8 và1package name: [hello-world]
2version: [1.0.0]
3description: hello world smart contract
4entry point: [index.js]
5test command:
6git repository:
7keywords:
8author:
9license: [ISC]
10About to write to /Users/.../.../.../hello-world/package.json:
11
12{
13 "name": "hello-world",
14 "version": "1.0.0",
15 "description": "hello world smart contract",
16 "main": "index.js",
17 "scripts": {
18 "test": "echo \\"Error: no test specified\\" && exit 1"
19 },
20 "author": "",
21 "license": "ISC"
22}
23
Hiện tất cả
2 được kết nối với người ký đầu tiên theo mặc định1npm install --save-dev hardhat
2
61mkdir hello-world
2cd hello-world
3
Gọi
3 trên một1npm install --save-dev hardhat
2
8 sẽ bắt đầu triển khai và trả về một1package name: [hello-world]
2version: [1.0.0]
3description: hello world smart contract
4entry point: [index.js]
5test command:
6git repository:
7keywords:
8author:
9license: [ISC]
10About to write to /Users/.../.../.../hello-world/package.json:
11
12{
13 "name": "hello-world",
14 "version": "1.0.0",
15 "description": "hello world smart contract",
16 "main": "index.js",
17 "scripts": {
18 "test": "echo \\"Error: no test specified\\" && exit 1"
19 },
20 "author": "",
21 "license": "ISC"
22}
23
Hiện tất cả
5 phân giải thành một1npm install --save-dev hardhat
2
2. Đây là đối tượng có một phương thức cho từng chức năng hợp đồng thông minh của chúng tôi1npm install --save-dev hardhat
2
Bước 16. Triển khai hợp đồng của chúng tôi
Chúng tôi cuối cùng đã sẵn sàng để triển khai hợp đồng thông minh của mình. Điều hướng đến dòng lệnh và chạy
71mkdir hello-world
2cd hello-world
3
Sau đó, bạn sẽ thấy một cái gì đó như
81mkdir hello-world
2cd hello-world
3
Nếu chúng tôi truy cập Ropsten etherscan và tìm kiếm địa chỉ hợp đồng của mình, chúng tôi sẽ có thể thấy rằng nó đã được triển khai thành công. Giao dịch sẽ giống như thế này
Địa chỉ
7 phải khớp với địa chỉ tài khoản MetaMask của bạn và địa chỉ Đến sẽ có nội dung “Tạo hợp đồng” nhưng nếu chúng tôi nhấp vào giao dịch, chúng tôi sẽ thấy địa chỉ hợp đồng của mình trong trường1npm install --save-dev hardhat
2
81npm install --save-dev hardhat
2
chúc mừng. Bạn vừa triển khai một hợp đồng thông minh cho chuỗi Ethereum 🎉
Để hiểu những gì đang diễn ra bên trong, hãy điều hướng đến tab Explorer trong bảng điều khiển Alchemy của chúng tôi. Nếu bạn có nhiều ứng dụng Alchemy, hãy đảm bảo lọc theo ứng dụng và chọn “Xin chào thế giới”.
Tại đây, bạn sẽ thấy một số lệnh gọi JSON-RPC mà Hardhat/Ethers đã thực hiện cho chúng tôi khi chúng tôi gọi hàm
9. Hai điều quan trọng cần gọi ra ở đây là1npm install --save-dev hardhat
2
0, là yêu cầu thực sự viết hợp đồng của chúng tôi lên chuỗi Ropsten và1npx hardhat
2
1 là yêu cầu đọc thông tin về giao dịch của chúng tôi được cung cấp hàm băm [một mẫu điển hình khi giao dịch]. Để tìm hiểu thêm về cách gửi giao dịch, hãy xem hướng dẫn này về cách gửi giao dịch bằng Web31npx hardhat
2
Đó là tất cả cho phần 1 của hướng dẫn này, trong phần 2, chúng ta sẽ thực sự tương tác với hợp đồng thông minh của mình bằng cách cập nhật thông báo ban đầu và trong phần 3, chúng ta sẽ xuất bản hợp đồng thông minh của mình lên Etherscan để mọi người sẽ biết cách tương tác với nó
Bạn muốn tìm hiểu thêm về thuật giả kim? . Không bao giờ muốn bỏ lỡ một bản cập nhật? . Hãy nhớ theo dõi Twitter của chúng tôi và tham gia Discord của chúng tôi