Bởi Tom Honzik
Nguồn: https://www.unchained.com/blog/examining-the-tradeoffs-of-miniscript-timelock-wallets
Nhiều phần mềm ví Bitcoin và dịch vụ lưu ký đang bắt đầu khám phá các mô hình bảo mật theo thời gian và các tùy chọn phục hồi. Những sản phẩm này đã thu hút sự quan tâm của một số người nắm giữ Bitcoin , những người muốn tìm hiểu cách thức hoạt động của chúng và xác định xem chúng có phải là lựa chọn tốt để bảo vệ khoản tiết kiệm Bitcoin của họ hay không.
Trong bài viết này, chúng tôi sẽ giải thích mục tiêu thiết kế của những ví lưu trữ này và giới thiệu các công nghệ nền tảng hỗ trợ chúng—khóa thời gian và Miniscript. Chúng tôi sẽ xem xét một số ví dụ thực tế và thảo luận về những đánh đổi của các ví này để giúp bạn đưa ra quyết định sáng suốt về việc có nên sử dụng chúng hay không.
"Ví khóa thời gian" là gì?
Trong bài viết này, thuật ngữ "ví khóa thời gian" dùng để chỉ ví Bitcoin trong đóđịa chỉ sử dụng khóa thời gian như một phần của mô hình bảo mật. Ví khóa thời gian có thể được tiếp thị bằng nhiều thuật ngữ khác nhau, chẳng hạn như cung cấp "khóa khôi phục dựa trên trải nghiệm", "kế thừa khóa bị trì hoãn", "bảo mật Miniscript nâng cao" hoặc một số kết hợp tương tự khác.
Khóa thời gian biến thời gian thành một yếu tố quyết định các điều kiện cần thiết để chi tiêu Bitcoin. Một ví dụ đơn giản là một địa chỉ trong đó ngăn chặn việc chi tiêu Bitcoin trước một ngày hoặc giờ nhất định (hoặc có thể ngăn chặn việc chi tiêu tiền trước một Block Height nhất định trên blockchain ).
Một ví dụ nâng cao hơn là một địa chỉ được thiết kế với một đường dẫn chi tiêu mặc định nhưng có một đường dẫn chi tiêu thay thế chỉ khả dụng sau một khoảng thời gian nhất định. Cấu trúc này hữu ích khi đường dẫn chi tiêu mặc định không sử dụng được, do mất khóa hoặc thiết bị bị hỏng. Chủ sở hữu địa chỉ và tiền trong đó có thể chỉ cần chờ đường dẫn chi tiêu thay thế khả dụng để lấy lại tiền; đường dẫn phục hồi này có thể được thiết kế với các yêu cầu chi tiêu khắt khe hơn hoặc yêu cầu một private key hoàn toàn khác. Sự quan tâm đến loại cơ chế phục hồi này là chất xúc tác chính cho sự xuất hiện của ví khóa thời gian trên thị trường lưu ký Bitcoin.
Ví khóa thời gian hoạt động như thế nào?
Ví Timelock được triển khai bằng hai công cụ chính. Công cụ đầu tiên là chức năng khóa thời gian của giao thức Bitcoin , vốn có nhiều phương pháp tạo ra và hạn chế khác nhau. Công cụ thứ hai là Miniscript , một công cụ phát triển tiên tiến hơn, cung cấp phương pháp an toàn hơn để tạo các điều kiện chi tiêu phức tạp, chẳng hạn như nhiều đường dẫn chi tiêu (những điều kiện chi tiêu này là tiền thân của địa chỉ Bitcoin). Hãy cùng tìm hiểu kỹ hơn về các công nghệ này.
Chức năng khóa thời gian
Có hai cách khác nhau để thêm khóa thời gian vào địa chỉ Bitcoin. Cách thứ nhất là "CLTV" (CheckLockTimeVerify), tạo ra một khóa thời gian tuyệt đối , nghĩa là khóa thời gian sẽ hết hạn (được mở khóa) vào một thời điểm được chỉ định trước. Thời điểm Bitcoin được nhập vào địa chỉ không ảnh hưởng trong đó thời gian mở khóa thời gian. Phương pháp này gây ra một vấn đề cho các ví sử dụng đường dẫn khôi phục lỏng lẻo với khóa thời gian: khi chúng ta đến gần hoặc thậm chí vượt qua thời điểm được chỉ định trước, mô hình bảo mật của ví sẽ thay đổi hoàn toàn. Nếu bạn muốn các khoản tiền gửi mới có đường dẫn khôi phục chỉ có hiệu lực trong tương lai xa, bạn sẽ phải định kỳ di chuyển sang một ví hoàn toàn mới (một tập hợp địa chỉ mới với cấu hình ví khác) chỉ để sử dụng một khóa thời gian tuyệt đối khác.
Một phương pháp khác, "CSV (Kiểm tra Xác minh Chuỗi)", thiết lập các khóa thời gian tương đối , nghĩa là chúng đếm ngược từ thời điểm mỗi khoản thanh toán nhập vào một địa chỉ như vậy. Do đó, mỗi UTXO (trong ví) có ngày hết hạn khóa thời gian khác nhau. Đây là một phương pháp tốt hơn cho các ví sử dụng cơ chế phục hồi theo thời gian, vì mô hình bảo mật của ví luôn ổn định theo thời gian—có thể đặt lại bộ đếm ngược chỉ bằng cách chuyển Bitcoin(từ địa chỉ cũ) sang địa chỉ mới trong cùng ví, thay vì phải xây dựng và sao lưu một ví hoàn toàn mới.
- Một ví dụ trực quan so sánh một địa chỉ sử dụng khóa thời gian tuyệt đối và một địa chỉ sử dụng khóa thời gian tương đối. Khi tạo ví, cả hai khóa thời gian đều được đặt thành 12 tháng. Trong ví sử dụng khóa thời gian tuyệt đối, khóa thời gian ở các địa chỉ khác nhau sẽ hết hạn cùng lúc; trong khi khóa thời gian tương đối sẽ khiến mỗi khoản tiền gửi có thời gian đếm ngược riêng (cùng thời gian). -
Một điểm khác biệt quan trọng khác giữa CLTV và CSV là phạm vi thời gian khóa. CLTV có thể được sử dụng để khóa Bitcoin trong nhiều thế kỷ, nghĩa là bất kỳ sự cố nào xảy ra với thời gian khóa đều có thể dẫn đến hậu quả thảm khốc. Tuy nhiên, thời gian khóa tối đa của CSV bị giới hạn ở 65.535 khối (khoảng 15 tháng) hoặc 65.535 * 512 giây (khoảng 13 tháng). Vì CSV là phương pháp được sử dụng để khóa ví hầu hết thời gian, nên hạn chế này rất đáng kể.
Bản thảo ngắn
Các quy tắc đồng thuận của Bitcoin sử dụng một ngôn ngữ lập trình đơn giản, dựa trên stack, gọi là " Script " để lập trình các điều kiện chi tiêu Bitcoin. Tuy nhiên, Script có thể khó sử dụng đối với những người muốn phát triển các điều kiện chi tiêu phức tạp hơn so với các điều kiện thường thấy trong ví đơn và đa chữ ký tiêu chuẩn. Việc kết hợp, xác thực và diễn giải các tập lệnh sử dụng nhiều đường dẫn chi tiêu có điều kiện có thể khó triển khai một cách an toàn và hiệu quả. Đây chính là động lực cho BIP379 Miniscript.
Miniscript sử dụng một phương pháp hữu ích hơn để thể hiện các tập lệnh, cho phép kết hợp và phân tích các yêu cầu chi tiêu phức tạp hơn một cách an toàn hơn. Mặc dù về mặt kỹ thuật, các ví khóa thời gian hiện tại có thể được triển khai chỉ bằng Script, nhưng Miniscript mở đường cho việc này trở nên thiết thực hơn. Dưới đây là một ví dụ so sánh mã Script và Miniscript cho cùng một điều kiện chi tiêu. Hình thức kết quả khá khác biệt, với mã Miniscript ngắn gọn hơn.
Kịch bản:
<A> OP_CHECKSIG OP_IFDUP OP_NOTIF <B> OP_CHECKSIGVERIFY <50c300> OP_CHECKLOCKTIMEVERIFYOP_ENDIF
Bản thảo ngắn:
or_d(pk(A),and_v(v:pk(B),after(50000)))
(Ghi chú của người dịch: Cần lưu ý rằng việc giới thiệu Miniscript không yêu cầu thay đổi các quy tắc đồng thuận của Bitcoin. Trên thực tế, Miniscript chỉ là một tập hợp con sức mạnh biểu đạt của Script. Nó chỉ đơn giản sử dụng một cấu trúc cụ thể để sử dụng các đoạn Script, cho phép chúng ta kết hợp, phân tích và xác minh mã ở cấp độ Miniscript. Nói cách khác, nó không thay đổi bản thân Bitcoin(biểu thức thực tế của các điều kiện chi tiêu vẫn là mã Script); nó chỉ thay đổi hoàn cảnh lập trình của nhà phát triển.)
Ví đựng tiền Time Lock
Sau khi đã tìm hiểu tiền đề cơ bản của ví khóa thời gian và cách chúng được xây dựng, hãy cùng xem xét một số ứng dụng mà chúng được hình dung. Mặc dù có thể tùy chỉnh, ví khóa thời gian thường có một đường dẫn chi tiêu chính (thường là cơ chế đa chữ ký) và một đường dẫn chi tiêu phục hồi, được giới hạn bởi một khóa thời gian. Các ý tưởng về đường dẫn phục hồi bao gồm đa chữ ký giảm dần, đa chữ ký mở rộng và khóa thay thế.
Giảm đa chữ ký
Giảm đa chữ ký là một phương pháp tạo ra một đường dẫn chi tiêu dễ dàng hơn cho ví đa chữ ký, được mở khóa theo thời gian. Với đa chữ ký k/n, việc giảm đa chữ ký giảm"k" theo thời gian, yêu cầu ít khóa hơn để ủy quyền rút tiền. Ví dụ: bạn có thể thiết lập một ví với Bitcoin được kiểm soát theo đa chữ ký 3/3, nhưng nếu Bitcoin trong địa chỉ đã không được chuyển đi trong một thời gian, bạn có thể giảm nó xuống đa chữ ký 2/3. Điều này có thể hữu ích trong trường hợp mất khóa.
Đa chữ ký mở rộng
Đa chữ ký mở rộng là một phương pháp khác để xây dựng đường dẫn khôi phục bị khóa thời gian. Với sơ đồ đa chữ ký k/n, đa chữ ký mở rộng sẽ tăng dần giá trị của "n" theo thời gian, cho phép các khóa công khai bổ sung cung cấp chữ ký hợp lệ để rút Bitcoin. Ví dụ: bạn có thể thiết lập sơ đồ đa chữ ký 2/2, sau đó, sau một thời gian không hoạt động, hãy kích hoạt sơ đồ đa chữ ký 2/3 để rút Bitcoin . Nếu trong đó trong hai khóa ban đầu bị mất, các khóa bổ sung sẽ cung cấp quyền truy cập cập nhật vào Bitcoin .
Chìa khóa thay thế
Đường dẫn khôi phục thậm chí còn khác biệt hơn so với đường dẫn chi tiêu mặc định—sử dụng các khóa hoàn toàn khác. Ví dụ: ban đầu bạn có thể tạo thiết lập đa chữ ký 2 trong 3 bao gồm các khóa công khai A, B và C, nhưng sau khi khóa thời gian hết hạn, bạn có thể chi tiêu tiền bằng thiết lập đa chữ ký bao gồm các khóa công khai D, E và F. Hơn nữa, khóa khôi phục có thể chỉ yêu cầu khóa công khai D hoặc bất kỳ cấu trúc nào khác mà bạn mong muốn. Phương pháp này có thể hữu ích trong việc lập kế hoạch di sản—khóa của người thi hành di chúc sẽ không hữu ích cho đến khi khóa thời gian hết hạn.
Mối quan tâm về ví bị khóa theo thời gian
Thoạt nhìn, việc kích hoạt cơ chế phục hồi khi khóa thời gian hết hạn rất hấp dẫn. Tuy nhiên, có một số đánh đổi có thể không dễ nhận thấy ngay nhưng đáng để cân nhắc.
Ví dụ, việc di chuyển ví khóa thời gian từ phần mềm này sang phần mềm khác có rất ít lựa chọn, đồng nghĩa với việc việc khôi phục ví nhìn chung có thể khó khăn hơn. Người dùng ví khóa thời gian cũng có thể phải đối mặt với phí giao dịch cao hơn đáng kể do quy mô giao dịch lớn hơn và khả năng di chuyển Bitcoin trong điều kiện phí kém thuận lợi hơn. Áp lực phải định kì chuyển Bitcoin và làm mới khóa thời gian có thể dẫn đến các tình huống quản lý khóa khó khăn—bạn phải nhớ di chuyển Bitcoin, nếu không bảo mật của bạn sẽ bị xâm phạm. Chúng tôi sẽ phân tích chi tiết hơn những lo ngại này bên dưới.
Tùy chọn di chuyển ví hạn chế
Ví đơn chữ ký và đa chữ ký phổ biến hiện diện khắp nơi trong hệ sinh thái lưu ký Bitcoin . Hàng chục phần mềm ví uy tín hỗ trợ các loại ví chuẩn hóa này và có khả năng tương tác, giúp người dùng dễ dàng chuyển đổi từ chương trình này sang chương trình khác. Điều này có nghĩa là nếu giao diện phần mềm ví của bạn (giao diện mà bạn xem và quản lý số dư Bitcoin ) gặp sự cố, bạn chỉ cần nhập thông tin cấu hình ví ( bằng tiếng Trung ) vào một giao diện khác để khắc phục sự cố và tiếp tục sử dụng Bitcoin.
Trong khi đó, ví khóa thời gian có thông tin cấu hình ví phức tạp hơn—thường được thể hiện dưới dạng mô tả —chứa thông tin chi tiết về các khóa thời gian này và các lộ trình chi tiêu khác nhau trong Miniscript. Tính đến thời điểm viết bài này, rất ít phần mềm ví có khả năng nhập các mô tả như vậy. Nếu bạn cấu hình ví khóa thời gian trong một phần mềm cụ thể (hoặc dịch vụ cộng tác) và tài khoản của bạn gặp sự cố, bạn có thể có ít lựa chọn phần mềm để khôi phục ví. Mặc dù các tùy chọn như vậy có tồn tại (chẳng hạn như Bitcoin Core), nhưng chúng có thể gây khó khăn cho người dùng ít am hiểu kỹ thuật.
Nếu các mô tả và Miniscript được các phần mềm ví uy tín hơn áp dụng, việc thiếu các tùy chọn di chuyển sẽ không còn là vấn đề nữa theo thời gian. Mặt khác, việc nhập một ví Miniscript độc đáo , độ sâu(chẳng hạn như ví khóa thời gian) có thể gặp phải một số thách thức. Lý tưởng nhất là một phần mềm ví nên hiểu được thiết kế của ví đã nhập và hiển thị thông tin hữu ích trên giao diện của nó, chẳng hạn như trạng thái khóa thời gian của mỗi UTXO. Điều này, đến lượt nó, sẽ yêu cầu các nhà phát triển phải phát triển các cải tiến đáng kể cho phần lớn các phần mềm ví phổ biến, vì các phần mềm này hiện không được thiết kế để diễn giải và hiển thị thông tin này.
Phí giao dịch cao hơn
Một trong những biến số chính quyết định phí giao dịch Bitcoin là dung lượng dữ liệu giao dịch. Dữ liệu giao dịch chứa thông tin cơ bản về số tiền được chuyển, nhưng cũng phải bao gồm một tập lệnh mô tả các điều kiện chi tiêu cần đáp ứng để giao dịch hợp lệ. Các điều kiện chi tiêu phức tạp hơn yêu cầu tập lệnh lớn hơn, do đó thường yêu cầu nhiều dữ liệu giao dịch hơn và phí cao hơn.
Ví khóa thời gian với nhiều đường dẫn chi tiêu là một ví dụ như vậy. Để tìm hiểu sự khác biệt giữa các thiết bị đường dẫn chi tiêu nhiều và ví Bitcoin tiêu chuẩn, chúng tôi đã so sánh ví đa chữ ký 2 trong 3 tiêu chuẩn với nhiều ví khóa thời gian khác nhau (tất cả đều sử dụng loại tập lệnh P2WSH). Một ví đa chữ ký được thiết kế dựa trên kiến trúc đa chữ ký 2 trong 2 và được mở rộng thành kiến trúc đa chữ ký 2 trong 3 15 tháng sau. Chúng tôi nhận thấy rằng với mỗi đầu vào bổ sung (một UTXO bổ sung được chi tiêu) khi rút tiền từ ví, kích thước giao dịch (được đo bằng vB) cho ví khóa thời gian tăng 13% so với giao dịch ví đa chữ ký tiêu chuẩn. Ví khóa thời gian thứ hai được thiết kế dựa trên kiến trúc đa chữ ký 3 trong 3 và được nâng cấp thành kiến trúc đa chữ ký 2 trong 3 15 tháng sau. Đối với ví này, mỗi đầu vào bổ sung làm tăng kích thước dữ liệu lên 38%.
Sự khác biệt về dữ liệu giao dịch có thể liên quan chặt chẽ đến các đặc điểm cụ thể của việc xây dựng ví timelock (ví sử dụng taproot sẽ được hưởng lợi từ việc giảm dữ liệu giao dịch này). Sự khác biệt này có thể đủ để ảnh hưởng đến quyết định quản lý UTXO, chẳng hạn như đề xuất mệnh giá tối thiểu cao hơn cho các UTXO của ví . Ngoài khối lượng giao dịch lớn hơn, ví timelock cũng có thể có nhu cầu cao hơn trong việc khởi tạo giao dịch trong hoàn cảnh phí cao, một mối quan tâm khác mà chúng tôi sẽ thảo luận ngay sau đây.
Áp lực phải di chuyển Bitcoin định kì
Ví có đường dẫn khôi phục theo thời gian được thiết kế có chủ đích sao cho các điều kiện chi tiêu này ban đầu bị vô hiệu hóa và chỉ được kích hoạt sau khi Bitcoin trong địa chỉ đã ở trạng thái nhàn rỗi trong một khoảng thời gian—không phải để cung cấp các đường dẫn thay thế ngay từ đầu. Mặc dù việc kích hoạt đường dẫn khôi phục giúp tăng khả năng truy cập vào tiền, rất hữu ích trong việc đối phó với nguy cơ mất khóa, nhưng nó cũng làm giảm khả năng bảo vệ chống trộm cắp. Do đó, người dùng ví bị khóa theo thời gian nên đảm bảo đường dẫn khôi phục luôn được khóa theo thời gian cho đến khi thực sự cần đến.
Ở đầu bài viết này, chúng tôi đã đề cập rằng phần lớn ví khóa thời gian sử dụng CSV, có khóa thời gian tối đa là 15 tháng. Do đó, để đảm bảo khóa thời gian không hết hạn, nó phải được đặt lại ít nhất 15 tháng một lần. Việc đặt lại khóa thời gian CSV không khó; nó chỉ đơn giản bao gồm việc chuyển Bitcoin sang một địa chỉ mới trong cùng một ví. Tuy nhiên, để làm như vậy, bạn cần truy cập vào private key cần thiết, xóa chúng khỏi bộ nhớ an toàn và ký một hoặc nhiều giao dịch để chuyển toàn bộ số dư trong ví. Thực hiện những hành động nhạy cảm này trong điều kiện áp lực thời gian có thể gây căng thẳng và bực bội. Hơn nữa, nếu quyền riêng tư là mối quan tâm, thì có thể cần phải thực hiện các giao dịch đặt lại thường xuyên hơn (xử lý từng UTXO riêng biệt) để tránh các liên kết địa chỉ có thể gây nguy hiểm cho quyền riêng tư .
Một cân nhắc quan trọng khác là tính biến động của phí giao dịch. Phí giao dịch không chỉ phụ thuộc vào dữ liệu giao dịch (như đã thảo luận ở phần trước) mà còn phụ thuộc vào hoàn cảnh phí — nhu cầu toàn cầu về việc di chuyển Bitcoin nhanh chóng. Hoàn cảnh phí này có thể tạo ra những biến động đáng kể trong những biến động giá Bitcoin đáng kể. Nếu bạn thiết lập ví khóa thời gian và lên lịch đặt lại sau mỗi 14 tháng (một tháng trước khi đếm ngược 15 tháng), bạn có thể thấy mức phí rất cao trong tháng cuối cùng này. Điều này khiến bạn phải đưa ra một lựa chọn khó chịu: bạn có thể trả thêm một khoản phí cao hơn ( có thể gấp hàng trăm lần mức phí thấp hơn ) hoặc đợi mức phí giảm. Nếu bạn đợi và mức phí tiếp tục tăng, bạn sẽ thấy mình bị dồn vào chân tường: hoặc để tính bảo mật của ví giảm xuống khi khóa thời gian hết hạn hoặc bạn có thể bỏ ra một lượng Bitcoin đáng kể để trang trải khoản phí.
Kết luận: Ví Timelock có an toàn hơn không?
Ví Timelock tận dụng Miniscript có thể làm tăng thêm độ phức tạp cho mô hình bảo mật của quỹ Bitcoin. Chúng có thể được tùy chỉnh để triển khai một số cấu trúc khéo léo, nhưng điều này đi kèm với những đánh đổi. Phí giao dịch, quản lý UTXO và các tùy chọn di chuyển ví bên ngoài đều có thể gây khó khăn hơn cho người dùng. Mô hình hành động liên tục cũng khác với chiến lược lưu ký của nhiều người dùng ví đa chữ ký tiêu chuẩn, vốn khóa trực tiếp dự trữ Bitcoin trong nhiều năm.
Khóa thời gian giải quyết độc đáo rủi ro mất khóa và trộm cắp, cung cấp thêm khả năng bảo vệ chống trộm cắp bằng cách tự động gỡ bỏ các hạn chế theo thời gian để giảm thiểu khả năng mất khóa. Sự phức tạp đầy sáng tạo này là nguồn gốc chính cho sức hấp dẫn của chúng. Tuy nhiên, ví đa chữ ký tiêu chuẩn đã cho rằng rộng rãi là một giải pháp mạnh mẽ cho rủi ro mất khóa và trộm cắp. Việc sử dụng ví đa chữ ký lưu ký chung với khóa dự phòng được nắm giữ bởi một proxy khóa cung cấp chức năng rất giống với ví khóa thời gian đa chữ ký mở rộng, nhưng ít lo ngại hơn về việc di chuyển ví và hành động kịp thời. Do đó, việc coi ví khóa thời gian là phức tạp không cần thiết cũng có phần đúng.
(qua)