Brownie: Cơ sở hạ tầng hợp đồng thông minh của Ethereum
Lưu ý của biên tập viên: Bài viết này đến từĐịnh lượng Kicking Horse River (ID: gh_e9da2a6cbc62), được in lại bởi Odaily với sự cho phép.
Lưu ý của biên tập viên: Bài viết này đến từ
Định lượng Kicking Horse River (ID: gh_e9da2a6cbc62)
Định lượng Kicking Horse River (ID: gh_e9da2a6cbc62)
, được in lại bởi Odaily với sự cho phép.
Khi nói đến bánh hạnh nhân, đừng nghĩ rằng chúng là những chiếc bánh nhỏ thơm ngon với hương vị sô cô la đen, bánh hạnh nhân được đề cập ở đây đề cập đến khuôn khổ cơ bản của hợp đồng thông minh được gọi là bánh hạnh nhân trên Ethereum. Brownie được sử dụng để phát triển các hợp đồng thông minh Ethereum, tính mạnh mẽ và dễ sử dụng của nó rất cao và nó thường được sử dụng cho:
Triển khai: Tự động triển khai nhiều hợp đồng vào chuỗi khối, khởi tạo hoặc tích hợp bất kỳ giao dịch nào cần thiết cho chúng.
Tương tác: Viết tập lệnh hoặc sử dụng bảng điều khiển để tương tác với các hợp đồng trên mạng chính hoặc thực hiện các thử nghiệm nhanh trong môi trường cục bộ.
Gỡ lỗi: Nhận thông tin chi tiết khi các giao dịch đang phục hồi để giúp bạn xác định vấn đề một cách nhanh chóng.
Kiểm tra: Viết kiểm tra đơn vị bằng Python và đánh giá phạm vi kiểm tra dựa trên phân tích dấu vết ngăn xếp.
Tiếp theo, hãy thử tạo một hợp đồng thông minh rất đơn giản trong Solidity, chỉ hiển thị hai hàm bên ngoài getValue và setValue Lưu hợp đồng thông minh này trong tệp smart_contract.sol.
Tiếp theo triển khai và tương tác với hợp đồng thông minh này thông qua Brownie.
cài đặt
Nỗ lực này sử dụng Python3.7 và virtualenv để cô lập môi trường của chúng tôi. Nếu Python3.7 chưa được cài đặt, bạn có thể làm theo các bước bên dưới.
Chúng tôi sẽ sử dụng Ganache, một chuỗi khối cá nhân để phát triển Ethereum. Thay vào đó, bạn cũng có thể cài đặt ethereum-testrpc, nhưng điều đó sẽ khiến GUI không thể chạy được. Khi cài đặt Ganache, hãy làm theo các bước.
Tạo môi trường ảo cho các dự án Solidity của bạn. Cái này đã được tạo và đặt tên là TestBrownie.Cài đặt Brownie.
Để khởi tạo một dự án trống, hãy bắt đầu bằng cách tạo một thư mục mới. Trong thư mục đó, gõ:
cấu trúc dự án
Mỗi dự án bánh hạnh nhân chứa các thư mục sau:
hợp đồng/: nguồn hợp đồng
giao diện/: nguồn giao diện
scripts/: tập lệnh để triển khai và tương tác
tests/: tập lệnh để kiểm tra dự án
brownie-config.yaml: tệp cấu hình dự án
Các thư mục dưới đây cũng được tạo bởi Brownie và được sử dụng nội bộ để quản lý dự án và không thể chỉnh sửa hoặc xóa.
build/: dữ liệu dự án, chẳng hạn như các tạo phẩm của trình biên dịch và kết quả kiểm tra đơn vị
báo cáo/: Các tệp báo cáo JSON được sử dụng trong GUI
biên dịch
smart_contract.sol sao chép hợp đồng thông minh của bạn trong thư mục hợp đồng. Biên dịch tất cả các nguồn hợp đồng trong thư mục con hợp đồng/dự án:
Mỗi khi trình biên dịch chạy, Brownie so sánh hàm băm của từng nguồn hợp đồng với hàm băm của phiên bản đã biên dịch hiện có. Nếu hợp đồng không thay đổi, nó sẽ không được biên dịch lại. Sử dụng brownie compile --all nếu bạn muốn buộc toàn bộ dự án được biên dịch lại.
Nếu bạn muốn biên dịch hợp đồng Solidity với phiên bản khác, bạn chỉ cần đề cập đến hợp đồng trong hướng dẫn sử dụng của tệp .sol. Nếu không có, nó sẽ được cài đặt tự động. Cần lưu ý ở đây: cài đặt cho bộ mã hóa nằm trong brownie-config.yaml.
Byzantium: Solidity <=0.5.4
Petersburg: Solidity >=0.5.5< =0.5.12
Istanbul: Solidity >=0.5.13, Vyper
Sửa đổi bất kỳ cài đặt trình biên dịch nào sẽ dẫn đến việc biên dịch lại hoàn toàn dự án.
Nếu một phiên bản trình biên dịch được đặt trong tệp cấu hình, phiên bản đó sẽ được sử dụng để biên dịch tất cả các hợp đồng trong dự án. Phiên bản phải được cung cấp dưới dạng một chuỗi ở định dạng 0.xx
Nếu phiên bản được đặt thành null, brownie sẽ xem xét chương trình sử dụng phiên bản cho từng hợp đồng và sử dụng phiên bản trình biên dịch phù hợp mới nhất được cài đặt.
Về evm_version, Brownie đặt bộ quy tắc theo trình biên dịch.
Bạn cũng có thể đặt phiên bản EVM theo cách thủ công. Các tùy chọn hợp lệ là byzantium, constantinople, petersburg và istanbul.Bộ quy tắc Ethereum Classic atlantis và agharta cũng có sẵn, được chuyển đổi thành ethereum tương đương trước khi được chuyển đến trình biên dịch.
Lưu ý: Brownie hỗ trợ phiên bản Solidity >= 0.4.22 và phiên bản Vyper 0.1.0-b16.
Sau khi biên dịch thành công, Brownie sẽ tạo một tệp SimpleContract.json trong thư mục bản dựng/hợp đồng.
triển khai
Mở brownie-config.yaml, nó có phần mạng, bạn có thể tùy chỉnh mạng hiện có hoặc tạo một khối mới trong mạng. Ganache GUI chạy trên cổng 7545 được sử dụng ở đây.
Tạo một khối riêng dưới mạng.
Lưu tập tin này. Bây giờ hãy triển khai hợp đồng thông minh đã biên dịch bằng bảng điều khiển bánh hạnh nhân. Nó rất giống với trình thông dịch Python thông thường. Từ thư mục dự án, tải nó bằng cách gõ:
Kiểm tra chéo các tài khoản trong đầu ra với các tài khoản hiển thị trên GUI Ganache.
Mỗi tài khoản riêng lẻ được đại diện bởi một đối tượng Tài khoản mà trên đó có thể thực hiện các hành động, chẳng hạn như truy vấn số dư hoặc gửi ETH.
Mọi hợp đồng và thư viện có thể triển khai đều có một ContractContainer để triển khai các hợp đồng mới và truy cập các hợp đồng hiện có. Tất cả các hợp đồng đã biên dịch đều có sẵn dưới dạng các biến cùng tên.
Triển khai hợp đồng 0 với tài khoản:
Nếu bạn nhập SimpleContract, bạn có thể thấy SimpleContract dưới dạng danh sách các phiên bản đã triển khai của các đối tượng ContractContainer.
sự tương tác
Xem các phương pháp có sẵn trong hợp đồng này:
Bắt đầu bằng cách thiết lập các biến trong hợp đồng thông minh.


