Khóa thời gian: những đồng coin không thể di chuyển cho đến một thời điểm nhất định

·4 phút đọc·Bởi SSP Editorial Team
Ảnh bìa SSP Academy: khóa thời gian trên blockchain

Khóa thời gian: những đồng coin không thể di chuyển cho đến một thời điểm nhất định

Phần lớn bảo mật trong crypto xoay quanh việc ai có thể chi tiêu: những khóa nào, bao nhiêu chữ ký. Khóa thời gian bổ sung một chiều thứ hai: khi nào. Một đồng coin bị khóa thời gian không thể được chi tiêu trước một ngày hoặc độ cao khối đã định, bất kể ai đang giữ khóa.

Nghe có vẻ là một tính năng ngách, nhưng khóa thời gian âm thầm vận hành rất nhiều thứ trong crypto: kênh thanh toán, lịch vesting, kế hoạch thừa kế và độ trễ trong quản trị. Hiểu về chúng cũng giúp giải thích một lựa chọn thiết kế mà bạn sẽ gặp ở hầu hết các ví.

Hai loại thời gian

Blockchain đo thời gian theo hai cách, và khóa thời gian sử dụng cả hai:

  • Thời gian tuyệt đối. "Không sớm hơn ngày 1 tháng 1 năm 2030" hoặc "không sớm hơn khối 1.000.000". Đồng coin bị khóa cho đến thời điểm đó, sau đó hoạt động bình thường.
  • Thời gian tương đối. "Không sớm hơn 1.000 khối sau khi nhận được đồng coin này." Đồng hồ bắt đầu chạy khi đồng coin được tạo ra, vì vậy mỗi khoản nạp có bộ đếm ngược riêng.

Khóa tuyệt đối phù hợp với các ngày cố định, như mốc cliff của vesting. Khóa tương đối phù hợp với các quy tắc kiểu "nếu không ai khác hành động trong vòng 30 ngày, khóa kia được phép chi tiêu", một mô hình thường xuất hiện trong các thiết kế khôi phục và thừa kế.

Bitcoin làm điều đó như thế nào

Bitcoin có khóa thời gian ở hai cấp độ:

  • Cấp giao dịch. Mỗi giao dịch có một trường nLockTime. Nếu trường này được đặt thành một thời điểm hoặc khối trong tương lai, mạng lưới sẽ không chấp nhận giao dịch cho đến lúc đó. Điều này khóa giao dịch, không phải đồng coin: người giữ khóa vẫn có thể ký một giao dịch khác không có khóa.
  • Cấp script. Hai opcode, OP_CHECKLOCKTIMEVERIFY (tuyệt đối) và OP_CHECKSEQUENCEVERIFY (tương đối), cho phép chính các quy tắc chi tiêu của một địa chỉ yêu cầu một khoảng thời gian nhất định đã trôi qua. Chúng khóa đồng coin: không giao dịch nào có thể chi tiêu nó sớm, bất kể ai ký.

Các phiên bản ở cấp script mới là những phiên bản mạnh mẽ. Chúng cho phép xây dựng các địa chỉ có nhiều đường chi tiêu, chẳng hạn "2 trong 3 khóa này vào bất kỳ lúc nào, hoặc một khóa dự phòng duy nhất này sau một năm".

Các chuỗi hợp đồng thông minh làm điều đó như thế nào

Trên Ethereum và các chuỗi tương tự, khóa thời gian chỉ là logic của hợp đồng: hợp đồng so sánh thời gian của khối hiện tại với một hạn chót đã lưu và từ chối thực hiện trước thời hạn đó. Điều này khiến khóa thời gian trở nên linh hoạt: hợp đồng vesting giải phóng token hằng tháng, hệ thống quản trị bắt buộc có thời gian chờ giữa lúc một cuộc bỏ phiếu được thông qua và lúc thực thi, và các hợp đồng có thể nâng cấp thông báo thay đổi trước nhiều ngày để người dùng kịp phản ứng.

Cách dùng cuối cùng này quan trọng đối với bảo mật. Một khoảng trễ giữa "một khóa quản trị đã quyết định điều gì đó" và "điều đó đã xảy ra" cho mọi người thời gian để phát hiện một thay đổi độc hại; đây là một trong những câu hỏi đáng đặt ra về quyền nâng cấp của bất kỳ hợp đồng nào.

Khóa thời gian hữu ích cho việc gì

  • Thừa kế và truy cập khẩn cấp. Một đường dự phòng chỉ mở ra sau một thời gian dài không hoạt động cho phép người thừa kế khôi phục tiền mà không thể đụng tới chúng khi bạn vẫn đang hoạt động. Lập kế hoạch thừa kế thường quy về chính loại quy tắc này.
  • Khóa khôi phục. Một khóa khôi phục có thể tự hành động, nhưng chỉ sau một khoảng trễ, sẽ ít nguy hiểm hơn nhiều nếu bị đánh cắp: chủ sở hữu có thời gian để chuyển tiền đi trước.
  • Kênh thanh toán. Lightning Network dựa vào khóa thời gian tương đối để cho mỗi bên một khoảng thời gian khiếu nại một hành vi gian lận.
  • Vesting và cam kết. Khóa token đến một ngày nhất định khiến lời hứa được chuỗi thực thi thay vì dựa vào lòng tin.

Những đánh đổi

Khóa thời gian không miễn phí:

  • Chúng cũng khóa cả bạn. Một khóa không thể phân biệt kẻ tấn công với một tình huống khẩn cấp. Nếu bạn cần tiền trước thời hạn, nó vẫn bị khóa.
  • Sự phức tạp có cái giá của nó. Các script có nhiều đường chi tiêu khó xây dựng, kiểm toán và khôi phục hơn. Một lỗi trong script có khóa thời gian có thể khiến tiền không thể chi tiêu được, và lỗi đó có thể chỉ lộ ra nhiều năm sau, khi khóa hết hạn.
  • Khóa tương đối cần được duy trì. Các cơ chế kiểu "sau một năm không hoạt động" thường yêu cầu chủ sở hữu làm mới coin của mình định kỳ để khởi động lại đồng hồ.
  • Mức hỗ trợ của các ví không đồng đều. Một địa chỉ có khóa thời gian chỉ hữu ích nếu phần mềm mà rốt cuộc bạn dùng để khôi phục hiểu được nó.

Khóa thời gian và SSP

Hiện nay, các kho của SSP là multisig thuần túy: một bộ khóa M-trên-N, không có điều kiện chi tiêu dựa trên thời gian. Kho 2-trên-2 của bạn có thể được chi tiêu bất kỳ lúc nào khi cả hai khóa đồng ý, và không bao giờ trong trường hợp khác. Đó là một sự đánh đổi có chủ đích: một script đơn giản dễ kiểm chứng, dễ khôi phục bằng các công cụ tiêu chuẩn, và không có đồng hồ nào có thể khiến bạn bất ngờ nhiều năm sau.

Việc khôi phục trong SSP hoạt động thông qua các khóa của bạn và bản sao lưu của chúng, chứ không qua các đường có độ trễ thời gian. So sánh các cấu hình multisig khác nhau trình bày những lựa chọn quan trọng với hầu hết mọi người, và đối với các nhóm, kho SSP Enterprise cho phép bạn chọn cần bao nhiêu người ký phê duyệt.

Tóm tắt thẳng thắn

Khóa thời gian cho phép chuỗi thực thi việc khi nào coin có thể di chuyển, chứ không chỉ ai có thể di chuyển chúng. Chúng giúp hiện thực hóa kế hoạch thừa kế, khóa khôi phục và kênh thanh toán mà không cần tin tưởng ai đó sẽ chờ đợi.

Chúng cũng làm tăng độ phức tạp và có thể khóa chặt chính chủ sở hữu không kém gì kẻ tấn công. Được dùng cẩn thận, chúng là một trong những công cụ hữu ích nhất của crypto, và những script đơn giản nhất vẫn thường là an toàn nhất.

Chia sẻ bài viết này

Bài viết liên quan