Spacechains: Đề xuất Sidechain Bitcoin mới này hoạt động như thế nào

Nút nguồn: 1544330

Spacechains là một sidechain Bitcoin được đề xuất cung cấp cơ chế chốt một chiều sử dụng thiết kế mỏ hợp nhất mù.

Ý tưởng về sidechain như một cơ chế mở rộng quy mô và tính năng cho Bitcoin là một khái niệm rất cũ. Một loại ý tưởng “tổ tiên” cơ bản của sidechains, hợp nhất chuỗi khai thác, thậm chí quay trở lại trước khi Satoshi biến mất.

Đề xuất đó chỉ đơn giản là ý tưởng về hai chuỗi hoàn toàn riêng biệt và không liên quan được khai thác bởi cùng một nhóm thợ mỏ, không có khả năng di chuyển bất cứ thứ gì giữa các chuỗi. Các đề xuất sidechain ban đầu được thực hiện vào năm 2014 bởi nhiều người đã tìm ra Blockstream theo đúng nghĩa đen khoảng một tuần sau khi bài báo được xuất bản. Ý tưởng cơ bản là có thể để tiền di chuyển qua lại giữa chuỗi khối Bitcoin chính và các chuỗi bên khác, với bằng chứng xác minh thanh toán đơn giản (SPV) được sử dụng để chứng minh mọi thứ là hợp lệ khi bạn gửi tiền từ chuỗi này sang chuỗi khác. Điều này không bao giờ thành hiện thực do sự phức tạp trong việc thực hiện việc tổ chức lại chuỗi, khả năng bị đánh cắp và rủi ro của việc tập trung khai thác (bạn có thể đọc tất cả những điều này trong phần bốn của tài liệu này). Giấy trắng bitcoin).

Cơ chế chốt cho sidechain có thể có hai loại, một chiều và hai chiều. Ý nghĩa phải rõ ràng - trong chốt hai chiều, các đồng xu có thể di chuyển qua lại giữa chuỗi gốc và chuỗi bên, và trong chốt một chiều, chúng chỉ có thể di chuyển từ chuỗi gốc sang chuỗi bên và không bao giờ di chuyển trở lại. Hiện tại, hình thức chốt sidechain hai chiều duy nhất được triển khai trên Bitcoin là thông qua sự đồng thuận liên kết, có nghĩa là chốt được đảm bảo bởi một nhóm “người giám sát” đáng tin cậy, những người duy trì quyền kiểm soát số tiền được chốt vào sidechain trong ví multisig cho đến khi chúng được rút.

Tuy nhiên, mọi người vẫn tiếp tục nghiên cứu các thiết kế khác cho các chốt sidechain không được liên kết. Ở đây tôi sẽ xem qua đề xuất Spacechain của Ruben Somsen làm một ví dụ. Đó là cơ chế chốt một chiều sử dụng thiết kế mỏ hợp nhất mù, tương tự như Paul Stztorc'S. Điều này có nghĩa là tiền chỉ có thể đi vào sidechain và không bao giờ rời đi, đồng thời những người khai thác không phải chạy phần mềm mới để nhận tiền bồi thường cho việc khai thác sidechain (tuy nhiên, như tôi sẽ đề cập sau, họ có thể hưởng lợi nhiều hơn khi làm như vậy).

Đề xuất Spacechain

Khai thác hợp nhất yêu cầu người khai thác chạy các nút của cả chuỗi Bitcoin và bất kỳ chuỗi nào khác mà họ đang khai thác, để biên dịch các khối cho cả hai chuỗi và cam kết chúng trong tiêu đề khối Bitcoin mà họ đang khai thác. Khai thác hợp nhất mù quáng lợi dụng thực tế là trên thực tế, những người khai thác Bitcoin chỉ thực sự cần có tiêu đề khối của chuỗi khác để cam kết trong khối Bitcoin của họ, người khác thực sự có thể gặp khó khăn khi tập hợp khối cho chuỗi kia.

Cơ chế đề xuất của Somsen cho việc này có thể sử dụng BẤT KỲ TRƯỚC NÀO (APO) để cho phép cạnh tranh mở cho bất kỳ ai có thể cạnh tranh để xây dựng khối sidechain tiếp theo trong khi đảm bảo chỉ có thể cam kết một khối cho mỗi khối chuỗi chính Bitcoin. Một lợi ích khác trong đề xuất của Ruben là nó không yêu cầu một soft fork cụ thể nào để có thể triển khai các spacechain. Eltoo/ANYPREVOUT đang được đề xuất vì lợi ích của Lightning Network, cho phép các chuỗi trạng thái linh hoạt cũng như các nhà máy sản xuất kênh. Spacechains chỉ đơn giản là một khả năng khác trong số nhiều thứ cho phép BẤT CỨ ĐIỀU GÌ NÀO sẽ mở đường cho nó.

Ý tưởng chung về đề xuất khai thác hợp nhất mù quáng của anh ấy là bằng cách sử dụng APO, bạn có thể xác định trước một tập hợp dài các giao dịch lấy cùng một UTXO ban đầu được đưa vào chúng và cam kết luôn tạo lại nó. Vì vậy, hãy tưởng tượng một UTXO satoshi duy nhất, với mỗi giao dịch được tạo trước đảm bảo rằng cùng một UTXO đó sẽ được tạo lại làm đầu ra khi được xác nhận. Hãy coi nó giống như một loại điểm đánh dấu, UTXO đặc biệt này là mã nhận dạng cho phép bất kỳ ai nhìn vào chuỗi khối Bitcoin chính đều biết: “Đây là nơi tôi tìm thấy cam kết đối với các khối của sidechain X”. Tuy nhiên, điều này để lại một vấn đề: phí khai thác. Nếu UTXO đó phải được tạo lại với số tiền tương tự thì sẽ không có tiền để trả phí.

Điều này có thể được giải quyết bằng cách sử dụng SIGHASH_SINGLE (chữ ký từ một đầu vào chỉ ký hiệu đầu vào duy nhất đó và đầu ra tương ứng) và SIGHASH_ANYONECANPAY (mọi người có thể tự do thêm đầu vào và đầu ra bổ sung mà không làm mất hiệu lực chữ ký miễn là đầu vào/đầu ra sử dụng SIGHASH_SINGLE được giữ nguyên để không làm mất hiệu lực chữ ký đó). Sau đó, bất kỳ ai cũng có thể thêm đầu vào và thay đổi đầu ra để trả phí khai thác cho giao dịch.

Đây cũng là cơ chế được sử dụng để cam kết tiêu đề khối của khối sidechain. Giống như cách mà Taproot cam kết với cây có các điều kiện chi tiêu khác nhau bằng cách điều chỉnh khóa chung thông thường bằng gốc Merkle của cây, bất kỳ ai cũng có thể điều chỉnh khóa chung thông thường bằng hàm băm tiêu đề khối của khối sidechain. Sau đó, các nút Sidechain có thể tiết lộ và chuyển tiếp tiêu đề khối đó bằng một con trỏ tới giao dịch trong chuỗi chính để chứng minh rằng nó thực sự đã được khai thác. Từ đó, các nút sidechain sẽ thực hiện tất cả các xác thực thông thường để đảm bảo khối sidechain tuân theo các quy tắc đồng thuận thích hợp và chuyển tiếp các khối thực tế trên mạng sidechain giống như trên chuỗi chính.

Nếu một trong các giao dịch được sử dụng để cam kết với các khối sidechain trên chuỗi chính được sử dụng để cam kết với một khối không hợp lệ hoặc thậm chí hoàn toàn là dữ liệu rác, thì khi các nút sidechain nhìn thấy giao dịch cam kết được sử dụng trên chuỗi, hai điều có thể xảy ra: Một, một khối không hợp lệ sẽ được truyền đi trên mạng sidechain và khi nó không vượt qua được quá trình kiểm tra xác thực, nó sẽ bị mồ côi; hoặc hai, dữ liệu không bao giờ được tiết lộ, trong trường hợp đó, khối sidechain tiếp theo sẽ được xây dựng bên trên và cam kết với khối cuối cùng thực sự được tiết lộ, và cam kết chưa được tiết lộ sẽ bị bỏ qua. Khả năng thứ hai này tuân theo cùng loại logic chuỗi dài nhất như chuỗi chính, vì vậy ngay cả khi điều gì đó được tiết lộ sau đó, nó vẫn sẽ mồ côi vì các khối trong tương lai không được xây dựng trên đó.

Nhưng vẫn còn vấn đề chi tiêu gấp đôi. Bất kỳ ai có khóa riêng được sử dụng để tạo mã đánh dấu UTXO đều có khả năng chi tiêu gấp đôi bất kỳ giao dịch nào được xác định trước được sử dụng để cam kết với các khối chuỗi bên và vô hiệu hóa toàn bộ tập hợp kể từ thời điểm đó trở đi.

Điều này được giải quyết bằng cách chèn chữ ký vào tập lệnh khóa của chính UTXO. Điều này khóa chữ ký trên đầu vào và đầu ra, đảm bảo việc tạo lại mã đánh dấu UTXO trong giao dịch tiếp theo sử dụng nó. Bởi vì chữ ký đó sẽ được tự động chuyển và kiểm tra khi UTXO được sử dụng nên không thể chỉ thay thế nó bằng một chữ ký khác và sử dụng nó đến một đích khác.

Điều này để lại một vấn đề nổi bật cuối cùng. Về mặt lý thuyết, có thể gửi nhiều giao dịch liên tiếp vào một khối Bitcoin duy nhất, để một số lượng lớn các khối sidechain được xác nhận bởi tất cả các thợ mỏ trong một khối chuỗi chính duy nhất. Điều này có thể bị lạm dụng để tấn công từ chối dịch vụ vào mạng sidechain.

Để giải quyết vấn đề này, khóa thời gian tương đối CHECKSEQUENCEVERIFY (CSV) có thể được chèn vào tập lệnh UTXO đánh dấu để đảm bảo rằng chỉ một giao dịch sử dụng UTXO đánh dấu mới có thể được xác nhận bên trong một khối chuỗi chính nhất định.

Nhìn chung nó trông như thế này: 

nguồn

Điều đáng lưu ý là hai biến thể của thiết kế này có thể được triển khai bằng CHECKTEMPLATEVERIFY (CTV) hoặc không có bất kỳ thay đổi nào cả. Hai biến thể thiết kế này đơn giản là có sự cân bằng dưới mức tối ưu.

Biến thể CTV sẽ sử dụng chức năng đó để thực hiện chuỗi giao dịch bằng CTV thay vì APO bằng cách hack bao gồm chữ ký bên trong tập lệnh khóa UTXO. CTV cam kết tất cả đầu ra của giao dịch chi tiêu CTV UTXO, nhưng nó không cam kết với bất kỳ đầu vào nào ngoài chính nó.

Điều này có nghĩa là bạn có thể thêm đầu vào nhưng không thể thêm đầu ra vào giao dịch CTV. Vì vậy, bạn có thể tự trả phí giống như trong thiết kế APO, nhưng bạn không thể thêm cam kết vào tiêu đề khối sidechain.

Vì vậy, điều chúng ta cần làm ở đây là tạo một giao dịch hoàn toàn nằm ngoài chuỗi giao dịch CTV cho cam kết sidechain tạo ra một UTXO vừa đủ để trả phí cho giao dịch CTV (vì bạn không thể tạo đầu ra thay đổi mới trong giao dịch đó, 100% đầu vào bạn thêm sẽ chuyển thành phí) và bên trong giao dịch chuẩn bị phí UTXO là nơi chúng tôi cam kết với tiêu đề khối sidechain. Vì vậy, bước đầu tiên: một giao dịch tạo ra đầu ra trả phí và cam kết đối với tiêu đề khối sidechain. Bước thứ hai: chúng tôi lấy đầu ra phí và thêm nó làm đầu vào cho giao dịch CTV, khi được xác nhận, “khai thác” khối sidechain cụ thể của chúng tôi. Biến thể này trông như thế này:

nguồn

Biến thể tiếp theo chỉ đơn giản sử dụng các giao dịch được ký trước. Nó có thể được triển khai ngay hôm nay, nhưng do những hạn chế của những gì tập lệnh có thể thực hiện, nó yêu cầu tất cả các khoản phí cho các giao dịch phải được trả trước bởi bất kỳ ai tạo ra spacechain.

Chuỗi giao dịch bắt đầu bằng một UTXO duy nhất và trong chuỗi tạo ra hai đầu ra. Đầu ra đầu tiên là UTXO đánh dấu, báo hiệu rằng chuỗi giao dịch có liên quan đến một spacechain cụ thể, đầu ra thứ hai là một UTXO giá trị nhỏ có thể được chi tiêu một cách công khai bởi bất kỳ ai cho phép gắn đầu vào/đầu ra khác vào nó. Giao dịch thứ hai này là nơi bất kỳ ai cũng có thể cam kết công khai là người đầu tiên chi tiêu đầu ra thứ hai đó từ chuỗi giao dịch spacechain và sử dụng nó để cam kết với tiêu đề khối sidechain của họ.

Trong biến thể CTV, khối sidechain phải được cam kết thực hiện trong giao dịch thứ cấp vì CTV không cho phép thêm đầu ra mới trong giao dịch sử dụng đầu vào bị khóa bởi CTV. Biến thể này yêu cầu sử dụng giao dịch phụ vì nếu bạn thêm bất kỳ đầu vào hoặc đầu ra mới nào vào chuỗi được ký trước, bạn sẽ thay đổi TXID của giao dịch và làm mất hiệu lực tất cả các giao dịch được ký trước sau đó. Biến thể này trông như thế này: 

nguồn

Một nhược điểm của biến thể cuối cùng này là nếu bất kỳ ai ký trước tất cả các giao dịch sẽ sử dụng cho các cam kết khối sidechain không xóa các khóa riêng được sử dụng để làm như vậy thì họ có thể tạm dừng chuỗi một cách hiệu quả bằng cách chi tiêu gấp đôi UTXO đánh dấu hiện tại bất cứ lúc nào. thời gian.

Và bạn có nó rồi đấy! Đây là đề xuất gần đây nhất về thiết kế sidechain trên Bitcoin và nó có thể được triển khai theo ba cách khác nhau, với lời cảnh báo rõ ràng rằng lộ trình triển khai có thể được thực hiện hiện có vấn đề yêu cầu ai đó xóa khóa riêng.

Bài viết này chỉ đơn giản là bài đầu tiên trong loạt bài liên quan đến các đề xuất thiết kế sidechain chính đã được xuất bản cho Bitcoin kể từ thiết kế ban đầu năm 2014. Hãy chú ý đến phần còn lại.

Đây là một bài đăng của Shinobi. Các ý kiến ​​được bày tỏ hoàn toàn là của riêng họ và không nhất thiết phải phản ánh ý kiến ​​của BTC Inc hoặc Tạp chí Bitcoin.

Dấu thời gian:

Thêm từ Tạp chí Bitcoin