Nodejs kết nối metamask

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
  1. Đ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”

  1. Đặ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

  1. 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

1mkdir hello-world

2cd hello-world

3

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. ]

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

1npm init

2

0 của chúng tôi

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

1npm init

2

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]

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õ

1mkdir hello-world

2cd hello-world

3

0

  • 1npm init

    2

    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ôi
  • 1npm 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ôi

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. ‌

  1. Đ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
  2. 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ì

1mkdir hello-world

2cd hello-world

3

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

1npm init

2

4

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

1mkdir hello-world

2cd hello-world

3

5

Sau đó, tạo một tệp

1npm init

2

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 đó

  • 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

1npm init

2

5 của bạn sẽ trông như thế này

1mkdir hello-world

2cd hello-world

3

0

Để 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

1npm init

2

1 của chúng tôi ở bước 13

Đừng cam kết

1npm init

2

5. Vui lòng đảm bảo không bao giờ chia sẻ hoặc tiết lộ tệp

1npm 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êm

1npm init

2

5 của bạn vào tệp gitignore

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

1mkdir hello-world

2cd hello-world

3

1

Chúng tôi cũng sẽ yêu cầu ethers trong

1npm init

2

1 của chúng tôi trong bước tiếp theo

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

1npm init

2

1 để dự án của chúng tôi biết về tất cả chúng

Cập nhật

1npm init

2

1 của bạn để trông như thế này

1mkdir hello-world

2cd hello-world

3

2

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ụ

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ả

4 là một trong những nhiệm vụ hardhat được tích hợp sẵn

Từ dòng lệnh chạy

1mkdir hello-world

2cd hello-world

3

3

Bạn có thể nhận được cảnh báo 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ả

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 Alchemy

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

1npm init

2

3 và tạo một tệp mới có tên

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ả

7 , thêm các nội dung sau vào đó

1mkdir hello-world

2cd hello-world

3

4

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

1mkdir hello-world

2cd hello-world

3

5

Một

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ả

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 plugin

1npm install --save-dev hardhat

2

0, phiên bản

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ả

8 và

1npm install --save-dev hardhat

2

2 được kết nối với người ký đầu tiên theo mặc định

1mkdir hello-world

2cd hello-world

3

6

Gọi

1npm install --save-dev hardhat

2

3 trên một

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ả

8 sẽ bắt đầu triển khai và trả về một

1npm install --save-dev hardhat

2

5 phân giải thành một

1npm 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ôi

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

1mkdir hello-world

2cd hello-world

3

7

Sau đó, bạn sẽ thấy một cái gì đó như

1mkdir hello-world

2cd hello-world

3

8

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ỉ

1npm install --save-dev hardhat

2

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ường

1npm install --save-dev hardhat

2

8

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

1npm install --save-dev hardhat

2

9. Hai điều quan trọng cần gọi ra ở đây là

1npx 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 Web3

Đó 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

Chủ Đề