Bạn có quan tâm đến việc xây dựng trên Ethereum bằng Python không? Cho dù bạn mới bắt đầu học lập trình hay bạn là một nhà phát triển JavaScript tò mò, người luôn thấy mọi thứ về Python 2/3 hơi khó hiểu, loạt bài hướng dẫn này đều dành cho bạn. Chúng ta sẽ xem qua tất cả các bước cần thiết để cài đặt và khám phá tất cả các lĩnh vực chức năng chính. Chẳng bao lâu nữa bạn sẽ hết cảm giác như thế này… Tôi khi tôi cố viết mã bất cứ thứ gì ở giao diện người dùngđể này Tương lai bạn, hack gibsonNếu bất cứ lúc nào bạn cảm thấy lạc lõng, vui lòng tham gia cùng chúng tôi trên Gitter và yêu cầu hỗ trợ Hãy đi sâu vào Cài đặtTrước khi chúng tôi có thể cài đặt Brownie, chúng tôi cần cài đặt một số phụ thuộc. Brownie dựa trên ganache-cli được viết bằng JavaScript. Điều này có nghĩa là chúng ta sẽ cần có cả Python và Node. js đã cài đặt. Hãy bắt đầu với các phần JavaScript Cài đặt nút. js và npmTrước tiên, hãy kiểm tra xem liệu Node. js và npm đã được cài đặt. Mở một cửa sổ đầu cuối và gõ các lệnh sau node -v Nếu một trong hai lệnh trả về thông báo lỗi, chúng ta sẽ cần cài đặt Node. js và npm. Chúng tôi cần ít nhất phiên bản Cài đặt Ganache-CLIKhi nút. js đã được cài đặt, chúng tôi đã sẵn sàng để cài đặt Ganache Ganache là một chuỗi khối tạm thời mà chúng tôi có thể sử dụng để thử nghiệm và phát triển. Nó cung cấp 10 tài khoản đã mở khóa được tài trợ với 100 ether mỗi tài khoản và khai thác các giao dịch khi chúng được phát sóng. Nó cũng cho phép chúng tôi làm những điều kỳ diệu như hoàn nguyên các giao dịch và tăng tốc về phía trước, đây là một trợ giúp rất lớn khi thử nghiệm đơn vị Ganache có hai hương vị. phiên bản GUI hoàn chỉnh với trình khám phá khối và phiên bản CLI được sắp xếp hợp lý hơn. Đối với Brownie, chúng tôi sẽ sử dụng phiên bản CLI Để cài đặt ganache-cli npm install -g ganache-cli Sau đó, chúng tôi có thể xác minh rằng nó đã được cài đặt chính xác ganache-cli --version Lưu ý rằng không giống như Truffle, Brownie không yêu cầu bạn tự khởi chạy Ganache. Brownie sẽ tự quản lý quá trình này một cách vui vẻ. Sau khi cài đặt, bây giờ chúng ta có thể tiếp tục và không bao giờ nghĩ về Ganache nữa Cài đặt Python và pipxĐược rồi, chúng ta đã đi được nửa chặng đường và chúng ta đã hoàn thành với các bit không phải Python. Tùy thuộc vào nền tảng của bạn, điều này có thể có nghĩa là phần khó nhất đã kết thúc hoặc chỉ mới bắt đầu. Nhưng đừng lo lắng, Python là một kẻ rình mò thân thiện 🐍 Trước tiên, hãy kiểm tra xem Python đã được cài đặt chưa. Nếu bạn đang sử dụng Linux hoặc OSX thì rất có thể đó là python --version Nếu bạn nhận được thông báo lỗi, bạn sẽ cần cài đặt Python. Nếu số phiên bản được hiển thị bắt đầu bằng npm install -g ganache-cli 0 trong lệnh trên và thử chạy lại. Chúng tôi cần ít nhất phiên bản npm install -g ganache-cli 1 để chạy BrownieKhi Python được cài đặt, chúng tôi đã sẵn sàng để cài đặt pipx. Pipx là công cụ giúp bạn cài đặt và chạy ứng dụng Python trong môi trường biệt lập. Nó làm cho việc chạy và nâng cấp Brownie dễ dàng hơn nhiều so với việc chúng ta sử dụng pip thông thường Để cài đặt pipx python -m pip install --user pipx Bạn có thể cần phải khởi động lại cửa sổ đầu cuối của mình sau khi cài đặt pipx, để các đường dẫn được cập nhật có hiệu lực Cài đặt bánh hạnh nhânCuối cùng chúng ta cũng ở đó. Với tất cả các phụ thuộc cần thiết, đã đến lúc cài đặt Brownie 😎 Nhập lệnh sau vào thiết bị đầu cuối của bạn pipx install eth-brownie Có thể mất một hoặc hai phút khi pipx cài đặt tất cả các gói python cần thiết. Sau khi cài đặt xong, hãy xác nhận rằng mọi thứ đã hoạt động ________số 8_______Bạn sẽ thấy một cái gì đó như thế này Chúng tôi đang kinh doanh. Chúc mừng bạn đã hoàn thành tốt công việc Khi bạn đã sẵn sàng, bạn có thể tiếp tục với Phần thứ hai, nơi chúng ta sẽ tạo một dự án mới và làm quen với một số chức năng chính của Brownie Bạn cũng có thể theo dõi tài khoản Twitter của Brownie, đọc các bài viết khác trên Phương tiện của chúng tôi và tham gia cùng chúng tôi trên Gitter Bạn có biết bạn có thể sử dụng solidity với Python không? Nếu những câu hỏi này xuất hiện trong đầu bạn, thì bạn đã đến đúng nơi. Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách bạn có thể triển khai hợp đồng Solidity của mình với Python và cả cách tương tác với hợp đồng. Trước tiên, chúng tôi sẽ xây dựng một hợp đồng Solidity đơn giản trước khi triển khai nó bằng Python và sau đó tương tác với nó Trong khi làm việc với Solidity cục bộ, bạn có thể muốn thử nghiệm và tương tác với hợp đồng thông minh của mình, bạn có thể sử dụng công cụ có tên là Web3. py điều kiện tiên quyết
Chúng tôi sẽ xây dựng một hợp đồng lưu trữ người dùng và số điện thoại của họ, tôi. e. một hợp đồng danh sách liên lạc. Đây không phải là lý tưởng, nhưng chúng tôi chỉ cần thứ gì đó mà chúng tôi có thể sử dụng để thử nghiệm triển khai của mình Để thực hiện điều này, chúng ta chỉ cần khởi tạo một mảng tên liên hệ và số điện thoại, ánh xạ chúng lại với nhau, nối liên hệ vào mảng liên hệ sau đó viết một câu lệnh để cho phép chúng tôi lấy số điện thoại từ tên liên hệ Để bắt đầu, hãy tạo một tệp Solidity mới cho dự án của bạn, trong trường hợp của tôi, đó sẽ là Danh sách liên hệ. sol. Bây giờ dán mã bên dưới vào tệp bạn vừa tạo. Tôi đã thêm nhận xét để mô tả những gì mỗi dòng đang làm // SPDX-License-Identifier: MITpragma solidity 0.8.0;contract ContactList { // uint phoneNumber; Bạn có thể kiểm tra hợp đồng trên Remix để xem liệu nó có hoạt động như dự kiến hay không trước khi tiến xa hơn trong quy trình Triển khai hợp đồng thông minh Solidity với PythonBây giờ chúng ta đang ở phần Python của bài viết này. Để triển khai, những gì chúng ta có thể làm là đọc tệp Solidity, biên dịch nó, thay đổi hợp đồng thành Python, xây dựng hợp đồng, ký hợp đồng và gửi hợp đồng Để bắt đầu, hãy tạo một tệp Python mới trong cùng thư mục mà bạn có tệp Solidity (triển khai. py). Tiếp theo, dán đoạn mã sau để đọc tệp Solidity with open("ContactList.sol", "r") as file: Bây giờ chúng ta phải biên dịch mã Solidity chỉ bằng cách đọc. Chúng tôi sẽ làm điều đó với py-solc-x. Đầu tiên cài đặt thư viện bằng cách chạy with open("ContactList.sol", "r") as file: 0. Từ py-solc-x, chúng ta cần các phương thức with open("ContactList.sol", "r") as file: 1 và with open("ContactList.sol", "r") as file: 2 để biên dịch. Nhập các phương thức bằng cách dán with open("ContactList.sol", "r") as file: 3 ở đầu tệp Python của bạnĐể biên dịch với with open("ContactList.sol", "r") as file: 1, bạn cần nêu một số tham số, như bạn có thể thấy trong đoạn mã bên dướiimport json #to save the output in a JSON file Bây giờ, hãy chạy mã bạn có và bạn nhận thấy rằng đầu ra đã được kết xuất trong compile_code. json. Chúng ta cần duyệt qua JSON để lấy ABI và mã byte, vì vậy sẽ rất hữu ích khi duyệt qua đầu ra JSON. Để giải nén ABI và mã byte, hãy dán đoạn mã sau vào bên dưới mã mà bạn có # get bytecodeSử dụng Ganache làm Chuỗi khối Để triển khai hợp đồng của chúng tôi, chúng tôi cần một chuỗi khối. Ganache CLI cung cấp một chuỗi khối mô phỏng mà bạn có thể sử dụng để kiểm tra mọi thứ khi triển khai. Để sử dụng Ganache, chúng tôi cần một công cụ giúp chúng tôi tạo hợp đồng bằng Python, đây là nơi Web3. py đến Bạn có thể cài đặt Web3. py bằng cách chạy và bạn có thể kiểm tra trang gói Ganache CLI để nhận hướng dẫn về cách cài đặt nó Chúng tôi cần một số thứ từ Ganache để tạo Máy chủ RPC hợp đồng, ID chuỗi ( with open("ContactList.sol", "r") as file: 5 cho Ganache), địa chỉ và khóa riêng. Bạn có thể lấy thông tin đăng nhập bằng cách chạy with open("ContactList.sol", "r") as file: 6. Chạy lệnh sẽ kích hoạt máy chủ với thông tin đăng nhập cần thiếtBây giờ dán đoạn mã sau vào triển khai của bạn. tập tin py. So sánh thông tin đăng nhập trong mã với hình ảnh ở trên để xem mọi thứ phù hợp ở đâu ... Bây giờ, để hoàn thành việc triển khai, chúng tôi phải xây dựng, ký và gửi các giao dịch (thay đổi trạng thái của chuỗi khối) tới Ganache. Để thực hiện việc này, hãy dán đoạn mã sau vào phần triển khai của bạn. tập tin py Ghi chú. Ganache là công cụ có ganache CLI là giao diện dòng lệnh cho Ganache # build transaction Bây giờ chúng tôi đã thiết lập mọi thứ, bây giờ bạn có thể triển khai hợp đồng của mình bằng cách chạy mã Python của bạn. Đảm bảo máy chủ Ganache của bạn vẫn hoạt động, nếu không nó sẽ không hoạt động Truy cập máy chủ Ganache của bạn và bạn sẽ thấy rằng chúng tôi đã triển khai một giao dịch và chúng tôi đã tạo hợp đồng Tương tác với Hợp đồngHai cách để tương tác với một hợp đồng với with open("ContactList.sol", "r") as file: 7 (gọi một hàm và nhận giá trị trả về) và with open("ContactList.sol", "r") as file: 8 (thực hiện các thay đổi trong hợp đồng)Khi cố gắng tương tác với hợp đồng, bạn cần có địa chỉ hợp đồng và ABI của hợp đồng. Chúng tôi đã nhận được ABI sớm hơn, nhưng chúng tôi có thể lấy địa chỉ hợp đồng cho with open("ContactList.sol", "r") as file: 9 như bạn sẽ thấy trong mã bên dưới. Thêm đoạn mã sau bên dưới những gì bạn có trong quá trình triển khai của mình. py để khởi tạo hợp đồng của chúng tôi với địa chỉ hợp đồng và ABIcontact_list = w3.eth.contract(address=transaction_receipt.contractAddress, abi=abi) Bây giờ bạn có thể tạo hợp đồng bằng cách dán mã bên dưới, trong mã bên dưới, bạn chỉ cần thêm một liên hệ store_contact = contact_list.functions.addContact( Bây giờ hãy ký, gửi và chờ giao dịch kết thúc # Sign the transaction Bây giờ bạn có thể truy xuất hợp đồng bằng hàm with open("ContactList.sol", "r") as file: 7print(contact_list.functions.retrieve().call()) Bây giờ hãy chạy mã với import json #to save the output in a JSON file1, và bạn sẽ thấy một cái gì đó giống như hình bên dưới. Điều này cho thấy rằng chúng tôi đã lưu thành công số liên lạc và chúng tôi có thể truy xuất số liên lạcPhần kết luận Trong hướng dẫn này, chúng ta đã có thể xây dựng Hợp đồng đơn giản trong Solidity và nhận dữ liệu cần thiết để xây dựng hợp đồng bằng Python bằng py-solx. Sau đó, chúng tôi đã tiến xa hơn để chuyển đổi hợp đồng Solidity thành Python rồi xây dựng, ký và gửi giao dịch tới Ganache bằng Web3. py Ganache không phải là một chuỗi khối thực sự, vì vậy vui lòng không bỏ tiền thật vào đó, chúng tôi chỉ sử dụng nó để kiểm tra mọi thứ tại địa phương |