Học cách viết hợp đồng thông minh Waves trên RIDE và RIDE4DAPPS. Phần 1 (Ví nhiều người dùng)

Học cách viết hợp đồng thông minh Waves trên RIDE và RIDE4DAPPS. Phần 1 (Ví nhiều người dùng)

Xin chào tất cả mọi người!

Gần đây hơn, Waves Labs công bố cuộc thi dành cho các nhà phát triển dành riêng cho việc phát hành phần mở rộng ngôn ngữ hợp đồng thông minh RIDE cho các ứng dụng phi tập trung Ride4Dapps vào mạng thử nghiệm!

Chúng tôi chọn trường hợp DAO vì liên doanh có kế hoạch phát triển dApps với các chức năng xã hội: bỏ phiếu, gây quỹ, quản lý ủy thác, v.v.
Chúng tôi bắt đầu với một ví dụ đơn giản trong Phiên hỏi đápIDE ĐI XE - ví dụ với ví chia sẻ.

Hãy xem ví dụ này, kiểm tra các giả thuyết và xem xét một số điều kỳ lạ:

Hãy để chúng tôi có Alice - Chủ sở hữu dApp
Boob và Cooper là đối tác của Alice, đồng sáng lập Alice-BC DAO
Neli là chủ doanh nghiệp cần tài trợ
Ngân hàng - ngân hàng phân phối token

Giai đoạn 1. Khởi tạo số dư

Để nhận token trên mạng thử nghiệm wave, bạn cần liên hệ vòi nước và cho biết địa chỉ để gửi mã thông báo.
Bạn có thể tìm thấy địa chỉ trong IDE bằng cách mở chi tiết tài khoản của mình.
Chúng tôi nhấn mạnh Ngân hàng 10 WAVES. Sau đó, chúng tôi kiểm tra xem chúng có đến thông qua trình duyệt khối và giao dịch hay không: người đánh giá

Bây giờ hãy phân phối mã thông báo từ ngân hàng cho những người tham gia còn lại. (Lưu ý: Tất cả các giao dịch trên mạng wave không miễn phí nên tất cả người tham gia cần có số dư dương tối thiểu để thực hiện giao dịch).

1 WAVES = 100000000 đơn vị (wavelet), vì số lượng chỉ có thể là số nguyên
0.01 WAVES (Phí giao dịch) = 1000000

Ngân hàng -> [3 WAVES] -> Alice, thông qua TransferTransaction (Loại: 4).

Chúng tôi kiểm tra xem env.SEED nơi các giao dịch được ký có khớp với Ngân hàng của chúng tôi hay không:
Học cách viết hợp đồng thông minh Waves trên RIDE và RIDE4DAPPS. Phần 1 (Ví nhiều người dùng)

Nếu bạn không có cụm từ gốc phù hợp, chỉ cần chuyển sang cụm từ đó trong tab Tài khoản và kiểm tra lại.
Sau đó, chúng tôi tạo, thông báo và ký giao dịch chuyển 3 WAVES Alice.
Bạn cũng có thể tìm hiểu dữ liệu của Alice thông qua biến env.accounts. Việc đánh số bắt đầu từ 0, vì vậy Alice là env.accounts[1].
Học cách viết hợp đồng thông minh Waves trên RIDE và RIDE4DAPPS. Phần 1 (Ví nhiều người dùng)

broadcast(transfer({recipient:address(env.accounts[1]), amount: 300000000, fee: 1000000}))

Kết quả cũng có thể được quan sát trong trình duyệt, một liên kết đến nó sẽ được trả lại cho chúng tôi ngay sau khi thực hiện giao dịch.

Chúng tôi đảm bảo rằng số dư của Alice được bổ sung thêm 3 WAVES và số dư ngân hàng vẫn ở mức 10 - 3 - 0.01 = 0.699.
Học cách viết hợp đồng thông minh Waves trên RIDE và RIDE4DAPPS. Phần 1 (Ví nhiều người dùng)

Học cách viết hợp đồng thông minh Waves trên RIDE và RIDE4DAPPS. Phần 1 (Ví nhiều người dùng)

Chúng tôi gửi cho Boob và Cooper 3 WAVES mỗi người, và Neli, Xena và Mark mỗi người 0.2 WAVES theo cách tương tự.
(Lưu ý: Chúng tôi đã mắc lỗi một ký tự và gửi Neli 0.02 WAVES. Hãy cẩn thận!)

broadcast(transfer({recipient:address(env.accounts[4]), amount: 20000000, fee: 1000000}))

Sau khi bổ sung số dư của tất cả những người tham gia, chúng tôi thấy:
Học cách viết hợp đồng thông minh Waves trên RIDE và RIDE4DAPPS. Phần 1 (Ví nhiều người dùng)

Giai đoạn 2. Tạo tài khoản dApp

Chúng tôi đã đồng ý rằng Alice sẽ là người tạo và chủ sở hữu ứng dụng phi tập trung.
Đi tới Tài khoản, đặt nó là SEED và kiểm tra env.SEED có khớp với Alice không.

Hãy thử cài đặt tập lệnh (hợp đồng) đơn giản nhất có thể vào tài khoản của Alice.
Danh bạ thông minh trong Waves là các vị từ cấm hoặc cho phép bất kỳ loại giao dịch gửi đi nào xảy ra trong một số điều kiện nhất định. Trong trường hợp này, điều kiện này là LUÔN. Mã hợp đồng là đúng. Gọi triển khai().

Học cách viết hợp đồng thông minh Waves trên RIDE và RIDE4DAPPS. Phần 1 (Ví nhiều người dùng)

Phí cho mỗi giao dịch setScript 1400000/100000000 = 0.014 WAVES. Alice còn 2.986 WAVES trong số dư của mình.

Bây giờ chúng ta hãy thử cài đặt logic hợp đồng thông minh phức tạp hơn trên tài khoản Alice, được mô tả trong thí dụ

Ride4Dapps hiện bao gồm 2 loại chú thích mới:

  1. @Callable(i) — lấy tham số i, dữ liệu về tài khoản nào đã gọi/ký giao dịch. Kết quả của chức năng này sẽ quyết định sự thay đổi trạng thái của tài khoản dApp. Các tài khoản khác có thể tạo giao dịch và thực hiện các chức năng với chú thích này và thay đổi trạng thái của tài khoản dApp.
  2. @Verifier(tx) — Trình xác minh giao dịch với tham số tx giao dịch. Tương ứng với logic vị từ từ RIDE. Chính trong biểu thức này, bạn có thể cho phép hoặc cấm các thay đổi tiếp theo đối với logic của hợp đồng thông minh trên tài khoản dApp.

Hay lam ứng dụng tài khoản như một ví chung cho tất cả người tham gia.
Học cách viết hợp đồng thông minh Waves trên RIDE và RIDE4DAPPS. Phần 1 (Ví nhiều người dùng)

Để kiểm tra hợp đồng nào hiện đang hoạt động trên tài khoản của bạn, bạn có thể sao chép mã base64 của hợp đồng thông minh trong trình khám phá khối và nhận dạng nó bằng trình dịch ngược (ví dụ)
Học cách viết hợp đồng thông minh Waves trên RIDE và RIDE4DAPPS. Phần 1 (Ví nhiều người dùng)
Học cách viết hợp đồng thông minh Waves trên RIDE và RIDE4DAPPS. Phần 1 (Ví nhiều người dùng)
Học cách viết hợp đồng thông minh Waves trên RIDE và RIDE4DAPPS. Phần 1 (Ví nhiều người dùng)

Chúng tôi đảm bảo rằng logic của hợp đồng thông minh phù hợp với những gì chúng tôi mong đợi.
Alice còn 2.972 WAVES trong số dư của mình.

DApp này theo dõi số tiền mỗi người tham gia đóng góp vào quỹ chung thông qua cơ chế giao dịch dữ liệu - DataEntry(currentKey, newAmount), trong đó currentKey là tài khoản gọi hàm gửi tiền và newAmount là giá trị của số dư được bổ sung.

Boob và Cooper gửi tiền vào tài khoản dApp với 1 WAVES.
Học cách viết hợp đồng thông minh Waves trên RIDE và RIDE4DAPPS. Phần 1 (Ví nhiều người dùng)

Chúng tôi mắc lỗi và giao dịch không thành công. Vì, mặc dù thực tế là chúng tôi tin rằng chúng tôi đang thực hiện giao dịch thay mặt cho Bob, nhưng chúng tôi đã mắc lỗi trong chỉ mục và chỉ ra một tài khoản Ngân hàng không có hợp đồng thông minh. Cần lưu ý một điểm quan trọng ở đây - sẽ phải trả phí cho những nỗ lực thực hiện giao dịch không thành công không thể gỡ bỏ được! Alice còn 2.972 WAVES trong số dư của mình. Bob có 3 SÓNG.

Bob đã gửi 1 WAVES tới Tài khoản dApp.

broadcast(invokeScript({dappAddress: address(env.accounts[1]), call:{function:"deposit",args:[]}, payment: [{amount: 100000000, asset:null }]}))

Học cách viết hợp đồng thông minh Waves trên RIDE và RIDE4DAPPS. Phần 1 (Ví nhiều người dùng)

Bob còn 1.99 WAVES. Tức là Bob trả 0.01 hoa hồng WAVES

Học cách viết hợp đồng thông minh Waves trên RIDE và RIDE4DAPPS. Phần 1 (Ví nhiều người dùng)

Alice có 2.972 WAVES trên số dư của mình, bây giờ là 3.972. Một giao dịch cũng đã được đăng ký trên tài khoản Alice nhưng không bị tính phí hoa hồng từ Tài khoản dApp (Alice).
Sau khi Cooper bổ sung thêm tài khoản, số dư của Alice trở thành 4.972 WAVES.

Học cách viết hợp đồng thông minh Waves trên RIDE và RIDE4DAPPS. Phần 1 (Ví nhiều người dùng)

Bạn có thể tìm ra ai sở hữu bao nhiêu WAVES trong ví thông thường trong trình khám phá khối trong tab Dữ liệu.

Cooper đã thay đổi ý định về việc để lại số tiền 1 WAVES trên ví chung và quyết định rút một nửa số tiền ái lực. Để làm điều này, anh ta phải gọi hàm rút tiền.

Học cách viết hợp đồng thông minh Waves trên RIDE và RIDE4DAPPS. Phần 1 (Ví nhiều người dùng)

Tuy nhiên, chúng tôi lại sai một lần nữa vì hàm rút tiền có các tham số hoàn toàn khác và chữ ký khác. Khi thiết kế hợp đồng thông minh trên RIDE4DAPPS bạn nên chú ý điểm này

Học cách viết hợp đồng thông minh Waves trên RIDE và RIDE4DAPPS. Phần 1 (Ví nhiều người dùng)

Cooper hiện có 2.48 WAVES trên bảng cân đối kế toán. Theo đó, 3 WAVES - 1 - 0.01 và sau đó là + 0.5 - 0.01. Theo đó, mỗi lần gọi gửi và rút tiền có giá 0.01 WAVES. Do đó, các mục trong bảng chủ sở hữu dApps đã thay đổi như sau.

Học cách viết hợp đồng thông minh Waves trên RIDE và RIDE4DAPPS. Phần 1 (Ví nhiều người dùng)

Bob cũng quyết định rút một số tiền từ ví dùng chung nhưng đã mắc sai lầm và cố rút 1.5 WAVES.

Học cách viết hợp đồng thông minh Waves trên RIDE và RIDE4DAPPS. Phần 1 (Ví nhiều người dùng)

Tuy nhiên, hợp đồng thông minh đã kiểm tra tình trạng này.

Xena là một kẻ lừa đảo, cô ấy đã cố gắng rút 1 WAVES từ tổng tài khoản.

Học cách viết hợp đồng thông minh Waves trên RIDE và RIDE4DAPPS. Phần 1 (Ví nhiều người dùng)

Nó cũng không thành công với cô ấy.

Trong phần tiếp theo, chúng ta sẽ xem xét các vấn đề phức tạp hơn liên quan đến tính chưa hoàn hảo của Tài khoản Alice dApp.

Nguồn: www.habr.com

Thêm một lời nhận xét