Logo Zephyrnet

Cách một công ty khởi nghiệp blockchain xây dựng một giải pháp nguyên mẫu để giải quyết nhu cầu phân tích cho các ứng dụng phi tập trung với AWS Data Lab

Ngày:

Bài đăng này được đồng viết với Tiến sĩ Quan Hoang Nguyen, CTO tại Fantom Foundation.

Ở đây tại Quỹ Fantom (Fantom), chúng tôi đã phát triển một nền tảng hợp đồng thông minh hiệu suất cao, có khả năng mở rộng cao và an toàn. Nó được thiết kế để khắc phục những hạn chế của thế hệ nền tảng blockchain trước đây. Nền tảng Fantom là mã nguồn mở, phi tập trung và không được phép. Phần lớn các ứng dụng phi tập trung (dApps) được lưu trữ trên nền tảng Fantom thiếu trang phân tích cung cấp thông tin cho người dùng. Do đó, chúng tôi muốn xây dựng một nền tảng dữ liệu hỗ trợ giao diện web sẽ được công khai. Điều này sẽ cho phép người dùng tìm kiếm địa chỉ hợp đồng thông minh. Sau đó, ứng dụng sẽ hiển thị các số liệu chính cho hợp đồng thông minh đó. Một nền tảng phân tích như vậy có thể cung cấp thông tin chi tiết và xu hướng cho các ứng dụng được triển khai trên nền tảng cho người dùng, trong khi các nhà phát triển có thể tiếp tục tập trung vào việc cải thiện dApp của họ.

Phòng thí nghiệm dữ liệu AWS cung cấp các cam kết kỹ thuật chung, được tăng tốc giữa khách hàng và các nguồn kỹ thuật AWS để tạo ra các sản phẩm hữu hình nhằm đẩy nhanh các sáng kiến ​​hiện đại hóa dữ liệu và phân tích. Data Lab có ba dịch vụ: Phòng thí nghiệm Xây dựng, Phòng thí nghiệm Thiết kế và Kiến trúc sư thường trú. Phòng thí nghiệm Xây dựng là một quá trình xây dựng chuyên sâu trong 2–5 ngày với nhóm khách hàng kỹ thuật. Phòng thí nghiệm Thiết kế là nơi tham gia kéo dài từ nửa ngày đến 2 ngày dành cho những khách hàng cần đề xuất kiến ​​trúc trong thế giới thực dựa trên kiến ​​thức chuyên môn của AWS, nhưng chưa sẵn sàng xây dựng. Cả hai cam kết đều được tổ chức trực tuyến hoặc tại trung tâm Phòng thí nghiệm dữ liệu AWS trực tiếp. Kiến trúc sư thường trú cung cấp cho khách hàng AWS hướng dẫn kỹ thuật và chiến lược trong việc tinh chỉnh, triển khai và tăng tốc chiến lược và giải pháp dữ liệu của họ trong thời gian tham gia 6 tháng.

Trong bài đăng này, chúng tôi chia sẻ kinh nghiệm tham gia của chúng tôi với Phòng thí nghiệm dữ liệu AWS để thúc đẩy sáng kiến ​​phát triển đường ống dữ liệu từ ý tưởng thành giải pháp. Trong hơn 4 tuần, chúng tôi đã tiến hành các phiên thiết kế kỹ thuật, xem xét các tùy chọn kiến ​​trúc và xây dựng đường ống dẫn dữ liệu bằng chứng về khái niệm.

Đánh giá ca sử dụng

Quá trình này bắt đầu bằng việc chúng tôi tham gia với nhóm Tài khoản AWS của mình để gửi đề cử cho phòng thí nghiệm dữ liệu. Tiếp theo là cuộc gọi với nhóm Phòng thí nghiệm dữ liệu AWS để đánh giá mức độ phù hợp của các yêu cầu đối với chương trình. Sau khi Phòng thí nghiệm Xây dựng được lên lịch, Kiến trúc sư Phòng thí nghiệm Dữ liệu AWS đã phối hợp với chúng tôi để thực hiện một loạt các cuộc gọi trước phòng thí nghiệm để hoàn thiện phạm vi, kiến ​​trúc, mục tiêu và tiêu chí thành công cho phòng thí nghiệm. Phạm vi là thiết kế một đường ống dữ liệu sẽ nhập và lưu trữ dữ liệu giao dịch trên chuỗi lịch sử và thời gian thực, đồng thời xây dựng một đường ống dữ liệu để tạo ra các chỉ số chính. Sau khi nhập, dữ liệu sẽ được chuyển đổi, lưu trữ và hiển thị thông qua các API dựa trên REST và được giao diện người dùng web sử dụng để hiển thị các chỉ số chính. Đối với Phòng thí nghiệm xây dựng này, chúng tôi chọn nhập dữ liệu cho Ma quái, là một sàn giao dịch phi tập trung (DEX) được triển khai trên nền tảng Fantom và có Tổng giá trị được khóa (TVL) lớn nhất tại thời điểm đó. Các chỉ số chính như số lượng ví đã tương tác với dApp theo thời gian, số lượng mã thông báo và giá trị của chúng được trao đổi cho dApp theo thời gian và số lượng giao dịch cho dApp theo thời gian đã được chọn để hiển thị thông qua giao diện người dùng dựa trên web.

Chúng tôi đã khám phá một số tùy chọn kiến ​​trúc và chọn một tùy chọn cho phòng thí nghiệm phù hợp nhất với mục tiêu cuối cùng của chúng tôi. Tổng dữ liệu lịch sử cho hợp đồng thông minh đã chọn là khoảng 1 GB kể từ khi triển khai dApp trên nền tảng Fantom. Chúng tôi đã sử dụng FTMScan, cho phép chúng tôi khám phá và tìm kiếm các giao dịch trên nền tảng Fantom, để ước tính tốc độ giao dịch chuyển khoản là khoảng ba đến bốn mỗi phút. Điều này cho phép chúng tôi thiết kế một kiến ​​trúc cho phòng thí nghiệm có thể xử lý tốc độ nhập dữ liệu này. Chúng tôi đã đồng ý sử dụng một ứng dụng hiện có được gọi là nhà sản xuất dữ liệu được phát triển nội bộ bởi nhóm Fantom để thực hiện các giao dịch trên chuỗi trong thời gian thực. Khi kiểm tra kích thước tải trọng của các giao dịch, nó được tìm thấy là không vượt quá 100 kb cho mỗi giao dịch, điều này cho chúng tôi thước đo số lượng tệp sẽ được tạo sau khi nhập thông qua ứng dụng sản xuất dữ liệu. Một quyết định đã được đưa ra để nhập 45 ngày qua của các giao dịch lịch sử để cung cấp cho nền tảng đủ dữ liệu để trực quan hóa các chỉ số chính. Bởi vì tính năng backdating tồn tại trong ứng dụng của nhà sản xuất dữ liệu, chúng tôi đã đồng ý sử dụng tính năng đó. Kiến trúc sư Phòng thí nghiệm Dữ liệu cũng khuyên chúng tôi nên cân nhắc sử dụng Dịch vụ di chuyển cơ sở dữ liệu AWS (AWS DMS) để nhập phòng thí nghiệm đăng dữ liệu giao dịch lịch sử. Bước cuối cùng, chúng tôi quyết định xây dựng một trang web dựa trên React với Vật liệu-UI cho phép người dùng nhập địa chỉ hợp đồng thông minh và chọn khoảng thời gian và ứng dụng tìm nạp dữ liệu cần thiết để hiển thị giá trị chỉ số.

Tổng quan về giải pháp

Chúng tôi cùng đồng ý kết hợp các nguyên tắc thiết kế sau cho kiến ​​trúc phòng thí nghiệm dữ liệu:

  • Đường ống dẫn dữ liệu được đơn giản hóa
  • Kiến trúc dữ liệu phi tập trung
  • Giảm thiểu độ trễ nhiều nhất có thể

Sơ đồ sau minh họa kiến ​​trúc mà chúng tôi đã xây dựng trong phòng thí nghiệm.

Chúng tôi đã xác định chung các tiêu chí thành công sau cho Phòng thí nghiệm xây dựng:

  • Quy trình phát trực tuyến dữ liệu từ đầu đến cuối để nhập các giao dịch trên chuỗi
  • Nhập dữ liệu lịch sử của hợp đồng thông minh đã chọn
  • Lưu trữ dữ liệu và xử lý các giao dịch trên chuỗi
  • Các API dựa trên REST để cung cấp các chỉ số dựa trên thời gian cho ba trường hợp sử dụng đã xác định
  • Giao diện người dùng web mẫu để hiển thị các chỉ số tổng hợp cho hợp đồng thông minh

Trước Phòng thí nghiệm Xây dựng

Như một điều kiện tiên quyết cho phòng thí nghiệm, chúng tôi đã định cấu hình ứng dụng sản xuất dữ liệu để sử dụng Bộ phát triển phần mềm AWS (AWS SDK) và PUTRecords Hoạt động API để gửi dữ liệu giao dịch tới một Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3). Đối với Phòng thí nghiệm xây dựng, chúng tôi đã xây dựng logic bổ sung trong ứng dụng để nhập dữ liệu giao dịch lịch sử cùng với dữ liệu giao dịch thời gian thực. Bước cuối cùng, chúng tôi đã xác minh rằng dữ liệu giao dịch đã được ghi lại và nhập vào nhóm S3 thử nghiệm.

Các dịch vụ AWS được sử dụng trong phòng thí nghiệm

Chúng tôi đã sử dụng các dịch vụ AWS sau đây như một phần của phòng thí nghiệm:

  • Quản lý truy cập và nhận dạng AWS (IAM) - Chúng tôi đã tạo nhiều vai trò IAM với các mối quan hệ tin cậy thích hợp và các quyền cần thiết có thể được sử dụng bởi nhiều dịch vụ để đọc và ghi dữ liệu giao dịch trên chuỗi và nhật ký đã tạo.
  • Amazon S3 - Chúng tôi đã tạo một thùng S3 để lưu trữ dữ liệu giao dịch đến dưới dạng tệp dựa trên JSON. Chúng tôi đã tạo một nhóm S3 riêng để lưu trữ dữ liệu giao dịch đến không thể chuyển đổi và sẽ được xử lý lại sau.
  • Luồng dữ liệu Amazon Kinesis - Chúng tôi đã tạo luồng dữ liệu Kinesis mới ở chế độ theo yêu cầu, tự động thay đổi tỷ lệ dựa trên các mẫu nhập dữ liệu và cung cấp khả năng quản lý dung lượng rảnh tay. Luồng này đã được ứng dụng nhà sản xuất dữ liệu sử dụng để nhập các giao dịch trên chuỗi theo thời gian thực và lịch sử. Chúng tôi đã thảo luận về khả năng quản lý và dự đoán chi phí, và do đó chúng tôi khuyên bạn nên sử dụng chế độ được cung cấp khi có sẵn các ước tính đáng tin cậy cho các yêu cầu về thông lượng. Chúng tôi cũng được khuyến cáo nên tiếp tục sử dụng chế độ theo yêu cầu cho đến khi các mẫu lưu lượng dữ liệu không thể đoán trước được.
  • Amazon Kinesis Dữ liệu Firehose - Chúng tôi đã tạo luồng phân phối Firehose để chuyển đổi dữ liệu đến và ghi dữ liệu đó vào nhóm S3. Để giảm thiểu độ trễ, chúng tôi đặt kích thước bộ đệm luồng phân phối thành 1 MiB và khoảng thời gian đệm là 60 giây. Điều này sẽ đảm bảo một tệp được ghi vào thùng S3 khi một trong hai điều kiện được thỏa mãn bất kể thứ tự. Dữ liệu giao dịch được ghi vào nhóm S3 ở định dạng Dòng JSON.
  • Dịch vụ xếp hàng đơn giản của Amazon (Amazon SQS) - Chúng tôi thiết lập một hàng đợi SQS thuộc loại Tiêu chuẩn và một chính sách truy cập cho hàng đợi SQS đó để cho phép các thông báo đến được tạo từ các thông báo sự kiện của nhóm S3.
  • Máy phát điện Amazon - Để chọn một kho lưu trữ dữ liệu cho các giao dịch trên chuỗi, chúng tôi cần một dịch vụ có thể lưu trữ các giao dịch tải dữ liệu phi cấu trúc với các lược đồ khác nhau, cung cấp khả năng lưu trữ các kết quả truy vấn và là một dịch vụ được quản lý. Chúng tôi đã chọn DynamoDB vì những lý do đó. Chúng tôi đã tạo một bảng DynamoDB duy nhất chứa dữ liệu giao dịch đến. Sau khi phân tích các mẫu truy vấn truy cập, chúng tôi quyết định sử dụng trường địa chỉ của hợp đồng thông minh làm khóa phân vùng và trường dấu thời gian làm khóa sắp xếp. Bảng được tạo ra với khả năng tự động điều chỉnh tỷ lệ của các chế độ dung lượng đọc và ghi vì yêu cầu sử dụng thực tế sẽ khó dự đoán tại thời điểm đó.
  • AWS Lambda - Chúng tôi đã tạo các chức năng sau:
    • Một hàm Lambda dựa trên Python để thực hiện các phép biến đổi đối với dữ liệu đến từ ứng dụng nhà sản xuất dữ liệu để làm phẳng cấu trúc JSON, chuyển đổi dấu thời gian kỷ nguyên dựa trên Unix thành giá trị ngày / giờ và chuyển đổi các giá trị chuỗi dựa trên hệ lục phân thành giá trị thập phân đại diện số lượng mã thông báo.
    • Một hàm Lambda thứ hai để phân tích cú pháp các tin nhắn hàng đợi SQS đến. Thông báo này chứa các giá trị cho bucket_nameobject_key, chứa tham chiếu đến một đối tượng mới được tạo trong nhóm S3. Logic hàm Lambda bao gồm phân tích cú pháp giá trị này để lấy tham chiếu đến đối tượng S3, lấy nội dung của đối tượng, đọc nó vào một đối tượng khung dữ liệu bằng cách sử dụng AWS SDK cho gấu trúc (awswrangler) thư viện, chuyển đổi nó thành một đối tượng khung dữ liệu Pandas và sử dụng đặt_df Lệnh gọi API để ghi đối tượng khung dữ liệu Pandas dưới dạng một mục vào bảng DynamoDB. Chúng tôi chọn sử dụng Pandas do quen thuộc với thư viện và các chức năng cần thiết để thực hiện các hoạt động biến đổi dữ liệu.
    • Ba hàm Lambda riêng biệt có chứa logic để truy vấn bảng DynamoDB và truy xuất các mục để tổng hợp và tính toán các giá trị số liệu. Giá trị chỉ số được tính toán này trong hàm Lambda được định dạng dưới dạng phản hồi HTTP để hiển thị dưới dạng các API dựa trên REST.
  • Cổng API Amazon - Chúng tôi đã tạo một điểm cuối API dựa trên REST sử dụng tích hợp proxy Lambda để chuyển địa chỉ hợp đồng thông minh và khoảng thời gian dựa trên thời gian tính bằng phút dưới dạng tham số chuỗi truy vấn tới hàm Lambda phụ trợ. Phản hồi từ hàm Lambda là một giá trị số liệu. Chúng tôi cũng đã bật chia sẻ tài nguyên đa nguồn gốc (CORS) hỗ trợ trong API Gateway để truy vấn thành công từ giao diện người dùng web nằm trong một miền khác.
  • amazoncloudwatch - Chúng tôi đã sử dụng cơ chế tích hợp hàm Lambda để gửi các chỉ số chức năng tới CloudWatch. Các hàm Lambda đi kèm với một nhóm nhật ký CloudWatch Logs và một dòng nhật ký cho mỗi phiên bản hàm của bạn. Môi trường thời gian chạy Lambda gửi thông tin chi tiết của từng lệnh gọi đến luồng nhật ký và chuyển tiếp nhật ký cũng như kết quả đầu ra khác từ mã hàm của bạn.

Phương pháp phát triển lặp đi lặp lại

Trong suốt 4 ngày của Phòng thí nghiệm xây dựng, chúng tôi đã tiến hành phát triển lặp đi lặp lại. Chúng tôi bắt đầu bằng cách phát triển lớp nền tảng và bổ sung lặp đi lặp lại các tính năng bổ sung thông qua thử nghiệm và xác thực dữ liệu. Điều này cho phép chúng tôi tự tin về giải pháp đang được xây dựng khi chúng tôi kiểm tra đầu ra của các chỉ số thông qua giao diện người dùng dựa trên web và được xác minh với dữ liệu thực tế. Khi lỗi được phát hiện, chúng tôi đã xóa toàn bộ tập dữ liệu và điều chỉnh lại tất cả các công việc để xác minh kết quả và giải quyết các lỗi đó.

Kết quả phòng thí nghiệm

Trong 4 ngày, chúng tôi đã xây dựng một đường dẫn phát trực tuyến từ đầu đến cuối sử dụng dữ liệu lịch sử trong 45 ngày và dữ liệu giao dịch trên chuỗi theo thời gian thực cho hợp đồng thông minh Spooky đã chọn. Chúng tôi cũng đã phát triển ba API dựa trên REST cho các chỉ số đã chọn và giao diện người dùng web mẫu cho phép người dùng chèn địa chỉ hợp đồng thông minh, chọn tần suất thời gian và trực quan hóa các giá trị chỉ số. Trong một cuộc gọi tiếp theo, Kiến trúc sư Phòng thí nghiệm Dữ liệu AWS của chúng tôi đã chia sẻ hướng dẫn sau phòng thí nghiệm về các bước tiếp theo cần thiết để sản xuất giải pháp:

  • Mở rộng quy mô của khái niệm bằng chứng để xử lý khối lượng dữ liệu lớn hơn
  • Các phương pháp bảo mật tốt nhất để bảo vệ dữ liệu khi ở trạng thái nghỉ và khi truyền
  • Các phương pháp hay nhất để lập mô hình và lưu trữ dữ liệu
  • Xây dựng một kỹ thuật phục hồi tự động để xử lý việc xử lý không thành công dữ liệu giao dịch
  • Kết hợp các giải pháp phục hồi sau thảm họa và tính khả dụng cao để xử lý các yêu cầu dữ liệu đến, bao gồm cả việc thêm lớp bộ nhớ đệm

Kết luận

Thông qua một thời gian ngắn tham gia và một nhóm nhỏ, chúng tôi đã đẩy nhanh dự án này từ một ý tưởng thành một giải pháp. Trải nghiệm này đã cho chúng tôi cơ hội khám phá chuyên sâu các dịch vụ AWS và khả năng phân tích của chúng. Bước tiếp theo, chúng tôi sẽ tiếp tục tận dụng các nhóm AWS để nâng cao giải pháp được xây dựng trong phòng thí nghiệm này để sẵn sàng cho việc triển khai sản xuất.

Tìm hiểu thêm về cách Phòng thí nghiệm dữ liệu AWS có thể giúp dữ liệu và phân tích của bạn trên hành trình đám mây.


Về các tác giả

TS Quan Hoang Nguyen hiện là CTO tại Fantom Foundation. Sở thích của anh ấy bao gồm DLT, công nghệ blockchain, phân tích hình ảnh, tối ưu hóa trình biên dịch và bộ nhớ giao dịch. Ông có kinh nghiệm trong lĩnh vực R&D tại Đại học Sydney, IBM, Capital Markets CRC, Smarts - NASDAQ và National ICT Australia (NICTA).

Ankit Patira là Kiến trúc sư Phòng thí nghiệm Dữ liệu tại AWS có trụ sở tại Melbourne, Úc.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img