Chiến lược sử dụng mạng DAPP: cách sử dụng Zeus và vRAM
LiquidApps
2019-08-24 05:13
本文约5942字,阅读全文需要约24分钟
Bài viết này là bài đầu tiên trong chuỗi diễn giải về mạng DAPP, giới thiệu bộ công cụ phát triển SDK Zeus, được sử dụng để hỗ trợ các nhà phát triển phát triển, thử nghiệm và triển khai dApp

Nếu bạn đang đọc điều này, có lẽ bạn đã nghe nóimạng DAPP, Mạng DAPP cung cấpvRAMvà các loại dịch vụ khác để giúp các nhà phát triển tạo ra một thế hệ dApps dễ sử dụng, có thể mở rộng mới.

Trong loạt chiến lược sử dụng mạng DAPP bắt đầu từ bài viết này, theo hướng dẫn của chúng tôi, bạn có thể sử dụng các dịch vụ của mạng DAPP trong dApps để thêm nhiều chức năng mạnh mẽ vào ứng dụng của mình. một cách phi tập trung.

Các nhà phát triển có thể chọn các gói dịch vụ được cung cấp bởi các nhà cung cấp dịch vụ DAPP (gọi tắt là DSP) trên thị trường tự do của mạng DAPP. Để thuận tiện cho các nhà phát triển, LiquidApps cũng cung cấpZeus SDKBộ công cụ phát triển giúp dApp của bạn sử dụng các dịch vụ trên mạng DAPP dễ dàng hơn.

Mạng DAPP hiện đang được triển khai trên mạng chính của EOS và tại thời điểm viết bài này, có 13 DSP khác nhau cung cấp tổng cộng 34 gói dịch vụ, hầu hết trong số đó là các dịch vụ loại vRAM.

Một số lượng lớn các dịch vụ được cung cấp trong mạng DAPP, để các nhà phát triển dễ hiểu hơn, chúng tôi đã viết loạt bài này để giải thích cách sử dụng các chức năng phong phú và đa dạng do mạng DAPP cung cấp: ví dụ: mạng và các dịch vụ tiên tri chuỗi chéo (LiquidOracles),Dịch vụ lập lịch công việc CRON (LiquidScheduler),Tạo số ngẫu nhiên, tài khoản ảo (LiquidAccounts) và dịch vụ vRAM (https://liquidapps.io/vRam) Chờ đợi.

Để sử dụng tốt hơn các dịch vụ này, chúng ta cần hiểu cách sử dụng các công cụ cơ bản: cách sử dụngZeus SDK

Zeus SDKĐây là một khung phát triển dễ sử dụng và có khả năng mở rộng cao, cho phép các nhà phát triển dApp sử dụng các sản phẩm và chức năng của mạng DAPP bằng cách thêm một lượng mã hợp đồng thông minh tối thiểu.

tiêu đề phụ

Cài đặt và sử dụng NVM

Nếu bạn đã cấu hình NVM rồi thì có thể bỏ qua phần này.

NVM là trình quản lý phiên bản Node được sử dụng để quản lý phiên bản phát triển của Node.js. Nếu bạn chưa cài đặt thì nên cài đặt và cấu hình phần mềm trước, NVM có thể giúp bạn sử dụng và chuyển đổi phiên bản node rất tiện lợi.

Lưu ý: Không nên sử dụng cài đặt Homebrew để cài đặt NVM trên Mac.

Nếu đang phát triển trên MacOS, bạn có thể được nhắc cài đặt các công cụ dòng lệnh Xcode theo các bước sau.

tiêu đề phụ

$ nvm install 10.x
$ nvm use 10.x
$ nvm install-latest-npm

Cài đặt phụ thuộc Zeus trên Linux

Trên Linux, bạn có thể cần cài đặt một số phụ thuộc:

Ubuntu/Debian:

$ sudo add-apt-repository ppa:ubuntu-toolchain-r/test$ sudo apt update
$ sudo apt upgrade -y libstdc++6
$ sudo apt install -y make cmake build-essential python

Centos/Fedora/AWS Linux:

$ sudo yum install -y make cmake3 python git gcc-c++ wget
$ export CMAKE_PREFIX_PATH=/usr/opt/eosio.cdt/1.6.1/lib/cmake/eosio.cdt

tiêu đề phụ

$ wget https://github.com/Kitware/CMake/releases/download/v3.14.3/cmake-3.14.3.tar.gz
$ tar xvfx cmake-3.14.3.tar.gz$ cd cmake-3.14.3
$ ./bootstrap
$ gmake
$ sudo make install
$ cd ..

Cài đặt và triển khai Zeus

Khi cài đặt Zeus, nếu bạn sử dụng cờ -g, nó sẽ được cài đặt trên toàn cầu:

$ npm install -g @liquidapps/zeus-cmd

Tuy nhiên, ngay cả khi Zeus được cài đặt trên toàn cầu, chỉzeus unboxCác lệnh có thể được sử dụng trên toàn cầu.

chẳng hạn nhưzeus testzeus migratezeus compileCác lệnh của lớp thuộc loại mở rộng và sẽ chỉ được truyền vàozeus unboxCác lệnh này sẽ chỉ có hiệu lực trong thư mục giải nén thu được bằng lệnh.

Sau khi Zeus được cài đặt, bạn có thể giải nén hợp đồng Helloworld để thử nghiệm nhằm đảm bảo mọi thứ hoạt động.

Tạo hoặc chọn một thư mục để lưu trữ sau khi giải nén, rồi chạy lệnh sau:

**$** zeus unbox helloworld
**$** cd helloworld
**$** zeus test

thực hiệnzeus unboxHoạt động sẽ tạo nhiều tệp và thư mục trong thư mục helloworld và tạozeus-box.jsontài liệu.

SDK Zeus đi kèm với nhiều ví dụ khác, có thể được xem bằng lệnh sau:

zeus list-boxes

Ví dụ: hiển thị cách sử dụng "coldtoken" của vRAM vàdeepfreeze, vgrab, cardgame,VàregistryĐợi đã, nó cũng bao gồmđấu giá vi mô, eos-detective-reports(Báo cáo thám tử của EOS),token(được tạo để triển khai hợp đồng eosio.token tiêu chuẩn) và nhiều ví dụ khác.

Để trưng bàyThêm loại dịch vụtiêu đề phụ

Thêm vRAM vào hợp đồng thông minh

Bây giờ SDK Zeus đã được thiết lập, nó có thể được sử dụng cho công việc phát triển EOSIO của chúng tôi.

Trước tiên, hãy xem cách thêmvRAM

Để tham khảo, bạn cũng có thể lấy mã đầy đủ của hướng dẫn War of the Elements hoàn chỉnh, phiên bản này do BlockOne cung cấp, không bao gồm vRAM:https://github.com/EOSIO/eosio-card-game-repo/tree/lesson-8

Chạy lệnh zeus unbox cardgame để lấy phiên bản vRAM của mã War of the Elements.

Xin lưu ý: vì lý do mạng, người dùng Trung Quốc có thể mất nhiều thời gian để sử dụng lệnh zeus unbox để lấy mã liên quan, vui lòng kiên nhẫn chờ đợi

giả sử bạn vẫn cònhelloworldTrong thư mục:

cd ../
$ zeus unbox cardgame
$ cd cardgame

zeus unboxPhần cuối cùng của kết quả cung cấp một số hướng dẫn hữu ích về những việc cần làm tiếp theo:

(OUTPUT)
Enter new directory:
 cd cardgame
Please try these sample commands:
 ⭐Deploy contract: zeus migrate
 ⭐Run frontend locally: zeus run frontend main
 ⭐Build frontend: zeus build frontend main
 ⭐Deploy frontend: zeus deploy frontend main
 ⭐Deploy and register frontend: zeus deploy frontend main — ipfs — register cardgame1111

Để giải thích những điều trên:

(OUTPUT) Nhập tên thư mục mới: cd cardgame Hãy thử các lệnh ví dụ sau: ⭐Triển khai hợp đồng: zeus di chuyển ⭐Chạy chức năng giao diện người dùng cục bộ: zeus run frontend main ⭐Tạo giao diện người dùng: zeus build giao diện người dùng chính ⭐Triển khai giao diện người dùng: zeus triển khai giao diện người dùng chính ⭐ Triển khai và đăng ký giao diện người dùng: zeus triển khai giao diện người dùng chính — ipfs — đăng ký cardgame1111

tiêu đề phụ

$ zeus migrate && zeus run frontend main

Cách bật vRAM cho hợp đồng

Để hiểu cách chuyển đổi hợp đồng này thành hợp đồng hỗ trợ vRAM, trước tiên hãy xemcardgame.hpptài liệu này.

hoặccardgame.cpphoặcgameplay.cppTập tin thậm chí không phải thay đổi, chỉ cầncardgame.hppMã trong tệp sẽ làm.

Xin lưu ý: Hợp đồng game bài sau khi giải nén có thể chứamột số tính năng bổ sung, chúng tôi đã không đề cập đến nó trong hướng dẫn này, đừng lo lắng, nó sẽ được giới thiệu trong chiến lược sau.

$ cd cardgame/contracts/eos/cardgame
$ nano cardgame.hpp

Trong tệp, chúng ta có thể thấy rằng việc thêm vRAM tuân theo một số bước đơn giản. Một số lưu ý bên lề nếu bạn chưa biết về một số thay đổi gần đây đối với EOS CDT.

1) Đầu tiên, sử dụng tiêu chuẩn#include cách nhập các tệp tiêu đề EOSIO, thì chúng ta sẽ thấy các thư viện cần thiết để nhập dịch vụ vRAM DAPP và một số chỉ thị tiền xử lý mới:

Lưu ý: Trong các phiên bản trước CDT 1.7 và trong mã War of the Elements gốc, dòng mã đầu tiên không#include Nhưng#include ,Nhưng,#include Phương pháp này đã không được chấp nhận.

#include "../dappservices/multi_index.hpp"
#define DAPPSERVICES_ACTIONS() \
 XSIGNAL_DAPPSERVICE_ACTION \
 IPFS_DAPPSERVICE_ACTIONS
#define DAPPSERVICE_ACTIONS_COMMANDS() \
 IPFS_SVC_COMMANDS() 
#define CONTRACT_NAME() cardgame

Nếu chúng tôi cần các dịch vụ khác, chúng tôi có thể nhập chúng ở đây. Ví dụ, nếu hợp đồng này cũng yêu cầuDịch vụ Oracle của Oracle

·/* ORACLES EXAMPLE ONLY NOT FOR VRAM */

#include "../dappservices/multi_index.hpp"

#include "../dappservices/oracle.hpp"

#define DAPPSERVICES_ACTIONS() \
 XSIGNAL_DAPPSERVICE_ACTION \
 IPFS_DAPPSERVICE_ACTIONS \
 ORACLE_DAPPSERVICE_ACTIONS

#define DAPPSERVICE_ACTIONS_COMMANDS() \
 IPFS_SVC_COMMANDS() \
 ORACLE_SVC_COMMANDS()

#define CONTRACT_NAME() cardgame

Chúng tôi sẽ giới thiệu cách sử dụng các dịch vụ khác ngoài vRAM trong bài viết tiếp theo.

2) Sau tất cả các hướng dẫn của chúng tôi (bao gồm cả việc sử dụng các câu lệnh), chúng tôi nói với Zeus rằng hợp đồng của chúng tôi có thể bắt đầu:

CONTRACT_START()

3) Chúng tôi đã sửa đổi loại của bảng dữ liệu "người dùng" và thay đổi định nghĩa loại của nó (typedef) thành loại dapp::multi_index. Trong mã gốc, loại của bảng dữ liệu là eosio::multi_index. Chúng tôi đã thay thế nó bằng dapp::multi_index để bật dịch vụ vRAM cho bảng người dùng. Đây là bảng được hợp đồng sử dụng cho nhiều tham chiếu đến bảng duy nhất users_table _users của nó.

Lưu ý: Biểu thức của tên("người dùng") tương đương với "người dùng"_n.

typedef dapp::multi_index users_table;

4) Để hỗ trợ các truy vấn của máy khách, một bảng ".users" mới đã được thêm vào bằng cách sử dụng cùng cấu trúc user_info và bảng "người dùng" hiện được xác định bởi cấu trúc shardbucket:

typedef eosio::multi_index<".users"_n, user_info> users_table_v_abi;

TABLE shardbucket {
 std::vector shard_uri;
 uint64_t shard;
 uint64_t primary_key() const { return shard; }
};

typedef eosio::multi_index<"users"_n, shardbucket> users_table_abi;

Lưu ý: Trong mã của chương trình mẫu War of the Elements ban đầu,struct[[eosio::table]]thay thếTABLE. Những biểu thức này là tương đương;TABLElà một macro có thể được dịch bởi trình biên dịch sangstruct[[eosio::table]]

5) Cuối cùng, ở cuối tệp, chúng tôi cóEOSIO_DISPATCHMacro được sửa đổi một chút,
Ở đây, CONTRACT_END() được sử dụng để biểu thị kết thúc hợp đồng, tương ứng với CONTRACT_START() mà chúng tôi đã viết trước đó ở đầu tệp:

CONTRACT_END((login)(startgame)(playcard)(nextround)(endgame))

Giờ đây, Zeus có thể biên dịch hợp đồng thông minh của chúng tôi thành dApp hỗ trợ vRAM. Lưu ý rằng các chỉ mục phụ để sử dụng trên vRAM hiện không được hỗ trợ.

Như trước đây, giờ đây chúng tôi có thể triển khai hợp đồng của mình cho mạng thử nghiệm cục bộ và sử dụng DSP cục bộ để cung cấp dịch vụ cho thử nghiệm:

 zeus migrate && zeus run frontend main

Để biết thêm thông tin, hãy xem phần không ngừng cải thiệnTài liệu LiquidApps,, nếu bạn có bất kỳ câu hỏi, xin vui lòng tham gia của chúng tôiKênh nhà phát triển Telegram

Trong bài viết tiếp theo, chúng tôi sẽ giới thiệu cách triển khai phiên bản vRAM của dApp trên mạng thử nghiệm Kirin, cách thế chấp mã thông báo DAPP cho nhà cung cấp dịch vụ DAPP để sử dụng dịch vụ vRAM và cách triển khai ứng dụng trên mạng chính của EOS.

Theo dõi Nhà phát triển LiquidApps trên twitterThực hiện theo phần còn lại của loạt bài này để tìm hiểu cách sử dụng hiệu quả bộ dịch vụ đầy đủ do Mạng DAPP cung cấp.

Bạn cũng có thể quét mã QR ở cuối bài viết, thêm người quản lý cộng đồng WeChat, mời bạn tham gia cộng đồng nhà phát triển Trung Quốc LiquidApps, nhận thông tin mới nhất và thảo luận với nhiều nhà phát triển cách sử dụng dịch vụ mạng DAPP để tạo mới thế hệ dApps.


Chào mừng đến với cộng đồng LiquidApps

Nhiệm vụ của LiquidApps là giảm độ khó và chi phí phát triển chuỗi khối bằng cách giới thiệu một loạt giải pháp kỹ thuật, nhằm thúc đẩy sự phát triển và triển khai quy mô lớn các ứng dụng phi tập trung (dApps).

Việc hiện thực hóa tiềm năng lớn nhất của các ứng dụng phi tập trung phụ thuộc vào sự đồng thuận và tham gia của cộng đồng.LiquidApps là một cộng đồng mở.Các ứng dụng phi tập trung có tương lai và tận hưởng quá trình tạo ra giá trị.

Trang web chính thức:https://www.liquidapps.io/

Bích Hồ:https://bihu.com/people/1528429636

Twitter:https://twitter.com/liquid_dapps

Nhóm điện tín tiếng Anh:https://t.me/LiquidAppsOfficial

Nhóm điện tín Trung Quốc:https://t.me/LiquidApps_community_China

Weibo:https://www.weibo.com/7126862764/profile?topnav=1&wvr=6&is_all=1

Đối với nhóm WeChat, vui lòng quét mã QR để thêm Quản lý cộng đồng LiquidApps Trung Quốc tham gia nhóm.

LiquidApps
作者文库