![](https://img.cointime.com/builder/gaSMwl4xSpyKjwzfTr5Hy08ClgEQHaG9O0iKCSuF.png)
Bạn muốn biết cơ chế vận hành hợp đồng được áp dụng trên AO? Vì vậy, hãy lấy mã hợp đồng và tìm hiểu. Sử dụng một applet python để dễ dàng có được hợp đồng của Quy trình được chỉ định.
Tác giả: txohyeah
Đánh giá bởi: outprog
Nguồn: Hiệp hội nội dung - Tin tức
Giới thiệu về AO
AO là gì?
Chưa đầy nửa năm kể từ khi testnet AO ra mắt, có rất nhiều nội dung về AO Nội dung bài viết này chủ yếu tập trung vào Quy trình và hợp đồng thông minh, bao gồm AO là gì, Quy trình là gì và cuộc sống. chu kỳ của quá trình. Cuối cùng, chúng ta sẽ tập trung vào cách xem mã hợp đồng của Process.
AO là một chức năng điện toán được Arweave phát triển thêm dựa trên việc cải thiện lưu trữ phân tán. Nó nhằm mục đích đạt được sự hỗ trợ ứng dụng phi tập trung toàn diện và tương ứng với lộ trình phát triển tính toán trước và lưu trữ sau của Ethereum. Nói một cách đơn giản, AO đại diện cho các hợp đồng thông minh hoặc sức mạnh tính toán trên nền tảng Arweave và là một phần mở rộng lớp logic trên giải pháp lưu trữ vĩnh viễn của nó.
AO bao gồm ba đơn vị, MU/SU/CU
MU: Nhận tin nhắn do người dùng gửi để đảm bảo chúng đã được ký.
SU: Đánh dấu thời gian và sắp xếp tin nhắn, sau đó nhóm và xuất bản lên Arweave. SU cũng là nhân vật chính mà chúng ta sẽ sử dụng ngày hôm nay và sẽ đóng một vai trò quan trọng khi xem xét hợp đồng sau này.
CU: Xử lý tin nhắn và tính toán kết quả.
![](https://img.cointime.com/builder/90zJpk7KX7Cralj8HiN1GtGd7d7Vzw43o0jxxc2Y.png)
Quy trình đang chạy trên AO là gì?
Quy trình đang chạy trên AO là gì?
AO về cơ bản là một máy tính siêu song song được xây dựng dựa trên Giao thức dữ liệu, trong đó dạng tồn tại của Dữ liệu là thành phần cơ bản Thông báo được xác định trong AO. Khi đó Process đóng vai trò quan trọng trong việc xử lý Message và là đơn vị cơ bản để xử lý message trên AO. Quá trình chạy trên CU và có thể được coi là máy ảo trên CU. Do đó, Quy trình chứa khả năng cơ bản để nhận và gửi tin nhắn trong mạng. Sau đó, các nhà phát triển xây dựng khả năng xử lý tin nhắn cho Process bằng cách thêm trình xử lý vào Process. Hợp đồng sẽ được thảo luận sau này thực sự được triển khai bằng cách gửi tin nhắn tới Process và sau đó sử dụng trình xử lý _eval tích hợp sẵn. Trình xử lý được thêm vào có thể hiểu là chức năng xử lý tin nhắn của hợp đồng.
![](https://img.cointime.com/builder/DumTNEjaTOU8noIHdfYlaIXNMDNdQrP4pClcpbR9.png)
Vòng đời của quá trình
Nếu chúng ta muốn tìm một sự tương đồng trong thế giới hiện tại của chúng ta, thì tôi nghĩ container (Container) trong docker có thể là một sự so sánh và hiểu biết tốt về Process. Tiếp theo mình sẽ dùng vòng đời của Container trong docker để so sánh vòng đời của Process.
Chúng ta đều biết rằng việc tạo một Container trong docker phụ thuộc vào một image (Image). Ví dụ: tạo một MySQL Container dựa trên MySQL Image, sau đó bạn có thể gọi dịch vụ MySQL trên container này. Điều này cũng đúng với Process trong AO. Việc tạo Process phụ thuộc vào Module, và cũng sẽ có những Module có chức năng khác nhau, có những Module đơn giản nhất, có những Module hỗ trợ các tác vụ theo lịch trình, có những Module bao gồm sqlite. Hiện tại có hàng trăm Mô-đun để nhà phát triển lựa chọn để tạo Quy trình của riêng mình. Ngoài ra, bạn cũng có thể tạo Mô-đun tùy chỉnh của riêng mình. Tôi tin rằng trong tương lai gần, cũng sẽ có các mô-đun hỗ trợ GPU và các mô-đun hỗ trợ nhiều khả năng AI khác nhau.
Process trong AO cũng khác với Container trong docker. Các thùng chứa trong Docker hỗ trợ nhiều hành động khác nhau như bắt đầu, dừng và xóa. Xét cho cùng, hiện tại không có hoạt động nào như vậy trong Quy trình của AO, trong thế giới ứng dụng phi tập trung, các chức năng này do các cá nhân tập trung kiểm soát có vẻ rất không nhất quán. Việc chạy Process trong AO phụ thuộc hoàn toàn vào giá trị của Process đó. Nếu nó có đủ giá trị thì chắc chắn sẽ có nhiều CU sẵn sàng chạy nó. Ngược lại, nếu một Process không có giá trị thì sẽ không có CU nào sẵn sàng chạy. Sau đó, Quá trình này sẽ biến mất một cách âm thầm.
Chức năng đánh giá và triển khai hợp đồng AO
Hợp đồng AO là gì? So sánh các hợp đồng thông minh của Ethereum. Mã Lua trong Quy trình chạy trên AO có thể được coi là một hợp đồng thông minh.
Khi chúng ta tạo một Process, mỗi Module được nạp sẽ có hai hàm xử lý mặc định (các hàm xử lý có thể hiểu là các hàm mở cho các Processes khác), một trong số đó là _eval handler. Chức năng chính của trình xử lý này là chạy mã Lua. Ví dụ: nếu bạn nhập 1+1 trong aos, số 2 sẽ được trả về và được trình xử lý này xử lý. Sau đó, hợp đồng triển khai thực sự có nghĩa là gửi thông báo đến Quy trình và thêm Trình xử lý tùy chỉnh có thể xử lý logic nghiệp vụ cho Quy trình thông qua trình xử lý _eval.
![](https://img.cointime.com/builder/6n4eMKWfPz6l2b5StWFYYNykW0FMd2PMLmxapUpw.png)
Có một điều cần lưu ý, vui lòng xem mã bên dưới. Đây là phần mã trong process.lua trong dự án AO nguồn mở chính thức. Trình xử lý _eval chỉ có thể được thực thi khi người gửi tin nhắn nhất quán với Chủ sở hữu của Quy trình (Chủ sở hữu là địa chỉ ví khi hợp đồng được tạo). Nghĩa là, nếu Chủ sở hữu được đặt thành không (nghĩa là Quy trình được đặt thành không có Chủ sở hữu), thì hợp đồng trong Quy trình sẽ trở thành hợp đồng mà không ai có thể sửa đổi.
![](https://img.cointime.com/builder/XBMkwuCYM6C6QFFKyIiGRcV953wDZ2tA9YBfxMAa.png)
Ngoài ra, vì AO thực sự được xây dựng dựa trên Mô hình đồng thuận dựa trên lưu trữ (SCP, Mô hình đồng thuận dựa trên lưu trữ), hợp đồng đang chạy phải được tìm thấy trên "sự đồng thuận lưu trữ", nghĩa là tất cả các thông báo đang chạy trong Quy trình, bao gồm thông qua Mã hợp đồng được trình xử lý _eval triển khai được lưu trữ trên Arweave. Vì vậy, bất kỳ ai cũng có thể tìm thấy mã hợp đồng trên “sự đồng thuận lưu trữ” này.
Xem hợp đồng
Vậy đến với chủ đề hôm nay, làm thế nào để tìm được mã hợp đồng? Dưới đây tôi sẽ giới thiệu hai phương thức và đưa ra một chương trình Python để nắm bắt hợp đồng.
dệt
Tất nhiên, phương pháp đầu tiên là truy vấn trực tiếp trên Arweave (bạn có thể sử dụng graphql https://arweave.net/graphql). Cách tiếp cận này yêu cầu dữ liệu phải được đóng gói vào Arweave để có thể sử dụng được.
SU - Trình duyệt
Phương pháp thứ hai là phương pháp được giới thiệu chủ yếu ngày nay. Vì tất cả dữ liệu sẽ được tải lên thông qua SU nên nó cũng có thể được truy vấn trên SU. Cá nhân tôi nghĩ rằng mỗi SU sẽ có một bộ nhớ đệm cục bộ chứa dữ liệu do chính nó tải lên nên có thể tìm thấy mã hợp đồng tương ứng bằng cách truy vấn SU. Đầu tiên, bạn có thể truy vấn trực tiếp bằng cách nhập địa chỉ vào trình duyệt. Tuy nhiên, nhược điểm của phương pháp này cũng rất rõ ràng: 1. Một số quy trình gửi và nhận lượng tin nhắn rất lớn nên lượng dữ liệu được tải lên chuỗi cũng rất lớn. Tuy nhiên, dữ liệu mà trình duyệt có thể tải bị hạn chế và thường xảy ra lỗi trình duyệt. 2. Rất khó để lọc ra dữ liệu hợp đồng bạn muốn từ dữ liệu khổng lồ.
Hình bên dưới hiển thị tất cả các thông báo của quy trình (quy trình mã thông báo AO) với id quy trình m3PaWzK4PTG9lAaqYQPaPdOcXdO8hYqi5Fe9NWqXd0w trong hai dấu thời gian.
![](https://img.cointime.com/builder/8MD1bYdCwxjAuxCLxS1hPrkRznY3VwPjgPLAVpyU.png)
SU-sdk
Ở đây tôi đã viết một chương trình nhỏ, sử dụng ao sdk được viết bởi một nhà lãnh đạo ngành dựa trên python, để lọc các thông báo có Hành động là Eval. (Thông báo có Hành động là Eval là tất cả các thông báo được xử lý bởi trình xử lý _eval, bao gồm cả mã hợp đồng đã tải.) Hình ảnh sau đây là thông báo tôi lấy từ SU, trong đó nội dung trong trường dữ liệu là ký tự thoát. Tất nhiên, các tin nhắn được chụp cũng sẽ chứa nội dung mã hợp đồng không triển khai, chẳng hạn như thực thi 1 + 1, v.v. Tuy nhiên, số lượng tin nhắn sau khi lọc không còn nhiều, mã hợp đồng có thể được chọn thủ công.
Chương trình là mã nguồn mở, đây là địa chỉ github: https://github.com/txohyeah/ao-sc
![](https://img.cointime.com/builder/D0q7YN0vhKUi7YEpYq83mEQ4bCAtfcE1T40vY0sD.png)
Hợp đồng mã thông báo AO
Vì vậy, hãy cùng hào hứng và xem mã hợp đồng của ao token. (Mã hợp đồng đã thu thập cũng sẽ được đưa vào kho mã nguồn mở)
Đầu tiên, khi khởi tạo trạng thái, TotalSupply = "2100000000000000000000" được xác định là nhất quán với việc phát hành Bitcoin.
Denomination = Denomination hay 12 cũng quy định dấu thập phân là 12 chữ số.
![](https://img.cointime.com/builder/pYBottvFIZwyk7DKEZYXXPIkbgZYkxrMLzOQ85HE.png)
Người ta định nghĩa rằng nếu chức năng truyền được thực thi trước khi 100.000 khối được tạo ra thì "Truyền bị khóa" sẽ được trả về trực tiếp.
Vì một khối được tạo ra cứ sau 5 phút nên sẽ có 100.000 khối vào khoảng tháng 2 năm sau.
![](https://img.cointime.com/builder/sDcG0p735wJs83TOrcq4fXZ2I2ylsmG3PiNLIedx.png)
Có nhiều thông tin liên quan hơn nên tôi sẽ không đi sâu vào chi tiết. Mọi người đều có thể vui vẻ duyệt qua hợp đồng AO cổ điển này.
Hướng dẫn chương trình
Có nhiều thông tin liên quan hơn nên tôi sẽ không đi sâu vào chi tiết. Mọi người đều có thể vui vẻ duyệt qua hợp đồng AO cổ điển này.
Hướng dẫn chương trình
Mình đã giới thiệu mã hợp đồng đã capture ở trên. Tiếp theo, mình sẽ giới thiệu ngắn gọn về chương trình này. Nó rất đơn giản, tôi tin rằng những người không biết mã có thể sử dụng nó một cách dễ dàng.
Bước đầu tiên là cài đặt phiên bản python 3.12. Chương trình được viết bằng python và việc cài đặt python là cần thiết.
Bước thứ hai là cài đặt các gói cần thiết. Chương trình này dựa trên SDK của các nhà lãnh đạo ngành và everpay.
![](https://img.cointime.com/builder/cV4BJbysnmgRpmC2yKvDZj62mwe2OGpBWXEhDmWp.png)
Bước thứ ba là sửa đổi start_time/end_time/process trong Fetch_sc_record.py. Và thực thi Fetch_sc_record.py.
start_time và end_time là khoảng thời gian bạn cần nắm bắt. quy trình là ID của Quy trình bạn cần để nắm bắt hợp đồng.
![](https://img.cointime.com/builder/h3GL8znN2tr77QmkRAKC79vGZkBoVuzkuPcLcycT.png)
![](https://img.cointime.com/builder/Smg6ugEBr09YU5FTDLew57Tl1HX27oS3KDGz4wfk.png)
Ở bước thứ tư, thông báo Eval tương ứng sẽ xuất hiện trong tệp msg_eval.json. Duyệt tin nhắn và bạn có thể tìm thấy mã hợp đồng bạn cần!
PS: Nó cũng cần giống như chạy aos. Đặt HTTPS_PROXY.
![](https://img.cointime.com/builder/lRn9fG1DkKBW7oUP9adsij85efT1Uwc0d6jNiw9X.png)
🏆 Giải “bắt lỗi”: Nếu phát hiện lỗi chính tả, câu sai hoặc mô tả sai trong bài viết này, hãy bấm vào để tôi báo cáo và bạn sẽ nhận được ưu đãi.
Tuyên bố miễn trừ trách nhiệm: Bài viết này không thể hiện quan điểm hoặc quan điểm của PermaDAO. PermaDAO không cung cấp lời khuyên đầu tư hoặc chứng thực bất kỳ dự án nào. Người đọc được yêu cầu tuân thủ luật pháp của quốc gia nơi họ sinh sống và thực hiện các hoạt động Web3 theo đúng quy định.
Tất cả bình luận