Đường đến Neo3: Cải thiện băm & di chuyển tập lệnh hợp đồng

TIN TỨC NEO
2020-02-07



Trong bài Đường đến Neo3 lần này, chúng ta sẽ xem xét quá trình phát triển đằng sau một tính năng mới nhằm cải thiện hệ thống hợp đồng thông minh cho các nhà phát triển bằng cách giải quyết các vấn đề với băm tập lệnh. Trên Neo3, các hợp đồng thay vào đó được đại diện bởi các mã định danh duy nhất trên toàn cầu (UUID), vẫn nhất quán ngay cả khi hợp đồng được cập nhật và tránh việc phải di chuyển dữ liệu mà rất nặng tài nguyên.

Xem các bài trong chuỗi bài Đường đến Neo3 tại đây.


Băm Tập lệnh (Script Hashes)

Để một hợp đồng thông minh được người dùng gọi ra, trước tiên, node phải biết nơi để tìm trong bộ lưu trữ của nó để tìm mã để thực thi. Trên Neo2, các khóa lưu trữ có dạng băm tập lệnh, được lấy bằng cách băm tập lệnh (opcodes) của một hợp đồng nhất định. Điều này được thực hiện đầu tiên với SHA256, sau đó kết quả được băm lại với RIPEMD160 để tạo ra băm tập lệnh.


Các băm tập lệnh này cũng có thể được thêm tiền tố với số phiên bản Neo hiện tại và chạy qua mã hóa Base58Check, biến nó thành định dạng địa chỉ công khai dễ đọc hơn mà người dùng Neo thông thường sẽ quen thuộc hơn.


Mặc dù cách tiếp cận này giúp đảm bảo rằng các hợp đồng khác nhau sẽ không kết thúc với cùng một hàm băm tập lệnh, nhưng nó đưa ra một vấn đề mới; cập nhật hợp đồng thông qua quá trình di chuyển có nghĩa là tất cả dữ liệu được lưu trữ phải được chuyển sang mã băm tập lệnh hợp đồng mới. Như Erik Zhang, nhà phát triển cốt lõi Neo giải thích, sự kiện này có khả năng mang lại chi phí lớn:


“Hiện tại, khi một hợp đồng thông minh được nâng cấp, tất cả dữ liệu được lưu trữ sẽ được chuyển sang hợp đồng mới. Nếu có một lượng lớn dữ liệu trong hợp đồng, khối lượng công việc di chuyển sẽ rất lớn và có thể gây ra một cuộc tấn công DoS (Denial Of Service - Từ chối Dịch vụ).”


Tiền tố khóa lưu trữ ngăn chặn truy cập lưu trữ hợp đồng chéo (Nguồn: Neo Github)
Tiền tố khóa lưu trữ ngăn chặn truy cập lưu trữ hợp đồng chéo (Nguồn: Neo Github)

Ngoài ra, việc thay đổi tập lệnh băm chính nó cũng đặt ra một vấn đề. Các nhà cung cấp dịch vụ đã tích hợp một hợp đồng cụ thể sẽ cần cập nhật thủ công các dịch vụ của họ để sử dụng hàm băm tập lệnh mới sau khi di chuyển hợp đồng thành công. Điều này thêm chi phí cho các thực thể như sàn giao dịch, nhà cung cấp ví và các hợp đồng khác tương tác thông qua việc gọi động.


Cơ chế đằng sau việc tạo ra mã băm kịch bản gây ra hiệu ứng phụ khác - các hợp đồng cũ không thể được triển khai lại. Vì bộ hướng dẫn đầu vào giống hệt nhau trong cả hai hợp đồng, nên băm tập lệnh giống nhau được tạo ra sau khi băm và việc triển khai sẽ thất bại do khớp.


Chuyển hướng hợp đồng

Sau khi đưa ra các mối quan tâm với logic hiện tại đằng sau việc di chuyển dữ liệu, Zhang đã đề xuất chuyển hướng hợp đồng như một giải pháp tiềm năng:


“Thay vì di chuyển dữ liệu trực tiếp trong mỗi lần nâng cấp hợp đồng, một bản ghi chuyển hướng được tạo. Khi hợp đồng đọc dữ liệu, nó có thể tìm thấy băm hợp đồng ban đầu dựa trên hồ sơ chuyển hướng, do đó truy cập vào dữ liệu chính xác.”


Mengyu Liu, một nhà phát triển NGD, đã giúp đưa ra đề xuất với các chi tiết bổ sung, lưu ý rằng việc tiêu thụ tài nguyên nặng xuất phát từ nhu cầu hợp đồng mới cập nhật tiền tố dữ liệu băm của khóa lưu trữ để kế thừa dữ liệu từ hợp đồng cũ.


Sử dụng giải pháp chuyển hướng, tiền tố dữ liệu không còn cần phải cập nhật. Thay vào đó, một bản ghi có thể được tạo để chuyển hướng sửa đổi dữ liệu hợp đồng thành hợp đồng ban đầu. Về bản chất, hợp đồng mới có thể đọc và ghi dữ liệu trực tiếp từ bộ lưu trữ hợp đồng ban đầu, loại bỏ nhu cầu di chuyển dữ liệu.


Tạo bản ghi chuyển hướng (Nguồn: Neo Github)
Tạo bản ghi chuyển hướng (Nguồn: Neo Github)

Công việc bắt đầu khi triển khai giải pháp này, bao gồm việc tạo ra hai thuộc tính hợp đồng mới, redirectionisDeleted, được yêu cầu xử lý logic xóa hợp đồng và cung cấp hàm băm tập lệnh gốc để sử dụng cho chuyển hướng.


Trong thời gian này, các vấn đề tiếp theo được xác định với giải pháp đề xuất. Chúng bao gồm không có khả năng triển khai các hợp đồng cũ và không thể gọi các phương thức từ hợp đồng ban đầu sau khi di chuyển. Điều này có nghĩa là như đã đề cập trước đó, các nhà cung cấp bên thứ ba vẫn cần cập nhật dịch vụ của họ để sử dụng hàm băm hợp đồng mới.


Không hài lòng với những thiếu sót của cách tiếp cận đã chọn, Zhang nhấn mạnh một cách tiếp cận thay thế cho các vấn đề với tập lệnh; định danh phổ quát duy nhất. Trong bài viết Đường đến Neo3 tiếp theo, chúng ta sẽ theo dõi sự phát triển và cung cấp chi tiết về việc thực hiện cuối cùng của UUID hợp đồng.


TINTUCNEO – Tham gia các cộng đồng Tin tức NEO tại:

Website tin tức

Medium tin tức

Telegram tin tức

Telegram Thảo luận

Fanpage tin tức

Kênh Youtube



0 bình luận. Để lại câu hỏi & nhận trả lời nhanh qua email.




Bài cùng chủ đề
NGD Enterprise tiết lộ hỗ trợ Phát triển theo hướng thử nghiệm trong Bộ công cụ Neo Blockchain
John deVadoss, người đứng đầu NGD Enterprise gần đây đã xuất bản một bài báo giới thiệu những lợi ích của phương pháp tiếp cận phát triển theo hướng thử nghiệm (TDD). Sau khi giới thiệu mô hình, deVadoss phân tích cách các kỹ thuật có thể được sử dụng để giảm thời gian gỡ lỗi và nhóm đang làm gì để đưa TDD đến các nhà phát triển blockchain Neo.

2021-01-13

TranslateMe tiến hành gây quỹ tư nhân, cung cấp vốn cổ phần trong công ty và các token TMN
TranslateMe đang tiến hành tăng vốn cổ phần tư nhân để thiết lập các dịch vụ API thương mại cho các nhà phát triển, doanh nghiệp và nền tảng.

2021-01-08

Switcheo cân bằng lại những phần thưởng của pool thanh khoản sau Đề xuất cải tiến TradeHub thứ năm
Đề xuất cải tiến TradeHub thứ 5 của Switcheo đã được thông qua thành công, cân bằng lại phần thưởng cho các pool thanh khoản giao ngay theo volume giao dịch. Sau kết luận bỏ phiếu vào ngày 31 tháng 12 năm 2020, trọng lượng phần thưởng chung đã được tự động triển khai trên nền tảng TradeHub.

2021-01-06

GhostMarket ra mắt chức năng đúc token không thể thay thế tùy chỉnh
GhostMarket đã ra mắt uMint NFT Factory, cho phép người dùng đúc các token không thể thay thế tùy chỉnh. Hiện tại, GhostMarket hỗ trợ đúc NFT trên blockchain Phantasma. Tuy nhiên, các hợp đồng thông minh để giao dịch và đúc NFT sẽ sớm được hỗ trợ trên Neo và các blockchain khác.

2021-01-03

Tham gia Cộng đồng NEO Việt Nam - TINTUCNEO
NEO-based projects? Contact us at [email protected] for collaborations in the Vietnam market