Bên cạnh giải pháp blockchain doanh nghiệp Protokol, thì Platform SDK là một trong 8 sản phẩm cốt lõi của ARK. Bộ công cụ nền tảng phát triển phần mềm của ARK (tiếng Anh: ARK’s Platform SDK) là một mảnh ghép trong việc nỗ lực tương tác nhiều loại Coin và Token khác.
Trong bài viết này, chúng ta sẽ cùng nhau xem xét quá trình tiêu chuẩn hóa và tích hợp của nó vào Desktop Wallet 3.0 sắp tới hay gọi là ví đa coin (Multi-asset) của Ark.
- Tìm hiểu tất tần tật về MarketSquare
- Deployer – Cách mạng hóa việc tạo Blockchain
- Nodem: Công cụ quản lý node tập trung
- Tìm hiểu ARK Explorer v3 xem có gì
- Protokol và sứ mệnh blockchain doanh nghiệp
ARK Platform SDK là gì
Platform SDK là một tập hợp các package chứa code TypeScript có nhiệm vụ tiêu chuẩn hóa tất cả các tương tác với bất kỳ một blockchain nào được triển khai bằng cách sử dụng SDK, ví dụ như: giao dịch ký kết, giao dịch niêm yết, đăng ký delegate, ký và xác nhận message, voting, staking….).
Các bạn có thể check code project ở đây: https://github.com/ArkEcosystem/platform-sdk
Việc chuẩn hóa các tương tác là một thách thức vì mọi dự án blockchain đều có ý tưởng riêng về cách mọi thứ sẽ hoạt động. Một trong những vấn đề thách thức nhất chính là các dữ liệu đầu vào bắt buộc để tạo giao dịch hoặc truy xuất dữ liệu ví rất khác nhau giữa các blockchain. Ngay cả sau khi chuẩn hóa các dữ liệu đầu vào, nhiều vấn đề mới xuất hiện liên quan đến các phương pháp khác nhau để tạo giao dịch. Một vài blockchain sử dụng cụm passphrase 12 hoặc 24 từ, một số sử dụng private key, cái khác lại dùng Wallet Import Format.
Đoạn code dưới đây cho thấy cách SDK xác định và chuẩn hóa các dữ liệu đầu vào có sẵn có thể được sử dụng để tạo giao dịch cho các blockchain khác nhau:
{
Identity: {
address: {
mnemonic: true,
multiSignature: true,
publicKey: true,
privateKey: true,
wif: true,
},
publicKey: {
mnemonic: true,
multiSignature: true,
wif: true,
},
privateKey: {
mnemonic: true,
wif: true,
},
wif: {
mnemonic: true,
},
keyPair: {
mnemonic: true,
privateKey: false,
wif: true,
},
}
}
Cho dù là dân IT hay non IT thì nhìn đoạn code trên cũng sẽ hiểu được các dữ liệu mnemonic, private key, wif,… được chuẩn hóa để phục vụ tạo giao dịch cho bất kì blockchain nào.
Tất cả các dữ liệu đầu vào khác nhau do mỗi blockchain quy định cần phải được chuẩn hóa lại mà không làm thay đổi trải nghiệm người dùng. Nếu bạn đang dùng 1 đồng coin cần private key để tạo giao dịch và có thể lấy private key từ cụm passphrase 12 hoặc 24 từ thì SDK sẽ yêu cầu bạn nhập cụm passphrase và nó sẽ lấy private key từ passphrase để tạo giao dịch. Điều này có nghĩa là các ứng dụng tích hợp SDK sẽ có thể cung cấp trải nghiệm người dùng liền mạch cho hầu hết các coin mà không cần thay đổi giao diện người dùng.
Một số thứ không thể được tiêu chuẩn hóa. Ví dụ: phí giao dịch sẽ yêu cầu một giao diện người dùng khác cho một số blockchain nhất định vì cách lựa chọn và tính phí của chúng. Ví dụ: Ethereum yêu cầu số lượng Gas trong khi ARK cung cấp cho bạn chọn một khoản phí động dựa trên mức trung bình của network, tính theo đơn vị arktoshi. ARK đã chọn không phát triển lại SDK cho fee và tuân theo các quy ước đã thiết lập chặt chẽ nhất có thể để tạo ra trải nghiệm người dùng quen thuộc cho người dùng Bitcoin và Ethereum.
Bên cạnh phí giao dịch, cũng có một nhiệm vụ khó khăn khác là tìm kiếm các coin với các API hiện đại và dễ truy cập. Bitcoin và Ethereum có một lượng lớn dữ liệu trên blockchain của chúng, nhưng việc truy cập nó để sử dụng dữ liệu lịch sử có thể là một việc lặt vặt. Ngay cả khi bạn thành công, bạn thường sẽ gặp phải tình trạng ngẽn cổ chai, tắc nghẽn hiệu suất với một thứ như Bitcoin JSON-RPC do hiệu suất bị hạn chế rất nhiều ngay cả khi tăng kết nối đồng thời (concurrent connections).
Những thách thức này với những đồng coin lớn hơn đã khiến ARK phải xây dựng một sản phẩm đi kèm có thể tổ chức dữ liệu theo cách dễ tiếp cận hơn, cho phép tránh những tắc nghẽn về hiệu suất lớn mà team đã trải qua bằng cách tương tác trực tiếp với API Bitcoin và Ethereum. Hiện tại SDK của ARK đã hỗ trợ cho 18 đồng coin như ADA, BTC, ATOM, ETH, NEO, TRX, XRP, DOT, EOS, XML,…. và con số tiếp tục tăng lên.
Link để tìm hiểu thêm về product SDK: https://ark.dev/docs/platform-sdk
Lưu ý: Ethereum 2.0 sẽ ra mắt với REST API hiện đại hơn nhưng vẫn chưa được xem liệu hiệu suất và trải nghiệm của nhà phát triển có được cải thiện đáng kể hay không. Ngày phát hành dự kiến là cuối năm nay.
Máy chủ Platform SDK
Máy chủ SDK là trung tâm cho cơ sở hạ tầng của SDK, cần thiết để tương tác với dữ liệu lịch sử của các đồng coin lớn như Bitcoin hay ETH, tất cả những điều đó mà không gặp phải tình trạng tắc nghẽn hiệu suất hoặc phải xử lý quá nhiều trên máy của người dùng. Máy chủ SDK bao gồm ứng dụng chịu trách nhiệm thiết lập chỉ mục (index) và hiểu thị dữ liệu thông qua API và nhiều server ElasticSearch (1 sản phẩm hỗ trợ tìm kiếm mạnh nhất thế giới) chứa đầy đủ các bản copy dữ liệu của Bitcoin và Eth.
Giữ bản copy đầy đủ của các blockchain đó là cần thiết vì chúng thiếu các API hiện đại để truy cập dữ liệu lịch sử và các công cụ hiện có như JSON-RPC của chúng gặp phải tình trạng tắc nghẽn nặng khi mở nhiều kết nối. Với ARK, chúng ta có quyền truy cập vào hàng trăm node (trong đó có nhiều node do người Việt đóng góp thông qua chương trình Node Ops) với các API công khai, giúp chúng ta có thể cân bằng tải trên nhiều node. Với Bitcoin và Ethereum, điều này là không thể thực hiện được vì các API phải được kích hoạt theo cách thủ công và chạy riêng lẻ thay vì là một công cụ có sẵn, có nghĩa là chúng ta không thể mong đợi mọi node trên các chuỗi khối đó đều có một API có thể truy cập được.
Việc lập chỉ mục các giao dịch mới cho Bitcoin và Ethereum diễn ra mỗi phút và hiện nay dung lượng tổng cộng ở đâu đó khoảng 4TB và điều này sẽ tiếp tục tăng. Hy vọng rằng Bitcoin và Ethereum sẽ cung cấp các API hiện đại để truy cập dữ liệu lịch sử mà không cần phải xây dựng các giải pháp tùy chỉnh hoặc dựa vào công cụ của cộng đồng. Truy cập vào tất cả thông tin blockchain không phải là một việc lặt vặt đối với các nhà phát triển. Nó phải càng đơn giản càng tốt nếu bạn đã có một bản copy đầy đủ của chuỗi khối trên node đã được đồng bộ hóa của mình.
Networking và Security
Máy chủ SDK chịu trách nhiệm về giao tiếp mạng với BTC và ETH nhưng những coin khác thì sao? Tất cả các đồng coin khác mà team ARK dự định hỗ trợ trong tương lai gần đều cung cấp các API tương đối hiện đại hoặc các giải pháp được lưu trữ của riêng họ, cho phép truy cập vào dữ liệu lịch sử. Điều này có nghĩa là chúng ta có thể tận dụng hệ sinh thái hiện có của họ mà không cần nỗ lực nhiều và dựa vào công cụ của họ, khỏe cả đôi bên.
Tất cả các giao dịch được thực hiện qua SDK và Desktop Wallet đã được tích hợp SDK sẽ được ký ngoại tuyến, điều này sẽ đảm bảo rằng không có thông tin nhận dạng cá nhân nào như cụm passphrase được gửi hoặc chặn bởi các tác nhân có khả năng độc hại.
Lợi ích của việc dựa vào cơ sở hạ tầng hiện có là tự động cập nhật kịp thời. Với Bitcoin và Ethereum, team ARK sẽ phải duy trì cơ sở hạ tầng của riêng mình để cung cấp trải nghiệm người dùng mượt mà. Tất cả các node được sử dụng để giao tiếp mạng đều là các node chính thức của blockchain đó mà bạn đang sử dụng hoặc các giải pháp được lưu trữ chính thức bởi ARK, như Máy chủ SDK nền tảng của ARK, đảm bảo bạn đang sử dụng các kết nối đáng tin cậy và an toàn mà không cần phải tải xuống các bản sao của chuỗi khối trước khi sử dụng chúng.
Trong ví dụ bên dưới, bạn có thể thấy cách SDK xác định và chuẩn hóa dữ liệu mạng cụ thể:
{
networks: {
mainnet: {
id: "mainnet",
type: "live",
name: "Mainnet",
explorer: "https://explorer.ark.io/",
currency: {
ticker: "ARK",
symbol: "Ѧ",
},
crypto: {
slip44: 111,
},
hosts: ["https://wallets.ark.io"],
hostsMultiSignature: [],
voting: {
enabled: true,
maximum: 1,
maximumPerTransaction: 1,
},
},
devnet: {
id: "devnet",
type: "test",
name: "Devnet",
explorer: "https://dexplorer.ark.io/",
currency: {
ticker: "DARK",
symbol: "DѦ",
},
crypto: {
slip44: 111,
},
hosts: ["https://dwallets.ark.io"],
hostsMultiSignature: [],
voting: {
enabled: true,
maximum: 1,
maximumPerTransaction: 1,
},
},
}
}
Mục tiêu của ARK là làm cho kết nối mạng với các blockchain liền mạch và an toàn nhất có thể với thông tin đầu vào tối thiểu từ các nhà phát triển và người dùng để mang lại trải nghiệm thú vị cho mọi người.
Tích hợp SDK với Desktop Wallet
Sự phát triển ban đầu của SDK được thúc đẩy bới Desktop Wallet 3.0 hay Multi-asset Wallet sắp tới sẽ sớm được phát hành. Đây sẽ là sản phẩm chính mà hầu hết mọi người sử dụng ARK sẽ tương tác.
Cấu trúc của Desktop Wallet 2.0 và 3.0 khác nhau rất nhiều khi có sự tương tác với nhiều đồng coin thay vì chỉ có các blockchain dựa trên ARK. Đạt được điều này có vẻ khó khăn nhưng thiết kế của SDK khiến việc này trở nên dễ dàng hơn nhiều.
Hãy xem qua một đoạn code để hiểu rõ hơn về cách SDK hoạt động khi được tích hợp vào một wallet.
import { ARK } from "@arkecosystem/platform-sdk-ark";
import { LSK } from "@arkecosystem/platform-sdk-lsk";
new Environment({ coins: { ARK, LSK }, httpClient, storage });
Chỉ cần import các package của các đồng coin hỗ trợ trong SDK, Wallet đã có thể tương tác được với đồng coin được hỗ trợ đó.
Vì SDK được thiết kế theo dạng plugin và chạy, nên rất dễ dàng tích hợp các đồng tiền mới vào Desktop Wallet. Chỉ cần triển khai đồng tiền mới của bạn (đồng thời tuân theo các hợp đồng triển khai SDK đảm bảo hành vi nhất quán), cài đặt nó vào Desktop Wallet và build lại nó. ARK đang xem xét hỗ trợ các đồng tiền mới thông qua các plugin để bạn hoàn toàn có thể tùy chỉnh ví của mình bằng các đồng tiền khác ngoài ARK.
Tổng Kết
Platform SDK là bước đầu tiên trong việc hỗ trợ nhiều network và là một cách để chuẩn hóa blockchain. Team hy vọng rằng bằng cách xây dựng bộ công cụ này, các nhà phát triển từ các công ty và cộng đồng blockchain khác sẽ thấy được lợi ích của phương pháp tiếp cận hiện đại và tiêu chuẩn hóa hơn để xây dựng các ứng dụng có thể hợp lý hóa và thúc đẩy sự phát triển của các sản phẩm và dịch vụ mới, thú vị được xây dựng trên các giải pháp phi tập trung.
Bài viết có tham khảo: https://ark.io/blog/arks-platform-sdk-tying-it-all-together-55afcab284d7