Tác giả: Nunchuk
1. Giới thiệu
"Miniscript" là gì?
Giao thức Bitcoin luôn bao gồm một ngôn ngữ lập trình mạnh mẽ (Bitcoin Script) cho phép khóa tiền vượt quá một chữ ký chính xác duy nhất. Sử dụng Bitcoin Script, bạn có thể kết hợp nhiều khóa công khai, khóa thời gian, tiền ảnh băm và các nhánh logic phức tạp. Tuy nhiên, trên thực tế, Bitcoin Script hiếm khi được sử dụng trực tiếp vì khó viết mã chính xác, lỗi có thể khóa tiền vĩnh viễn và mã kết quả gần như không thể phân tích trực tiếp.
Miniscript ( BIP-379 ) là "một ngôn ngữ phương pháp để viết mã Bitcoin Script, cung cấp khả năng phân tích, biên soạn và chữ ký phổ quát", do Pieter Wuille và các cộng sự đề xuất. Nó giải quyết các vấn đề về khả năng sử dụng và bảo mật của Bitcoin Script thô, đồng thời vẫn duy trì khả năng tương thích hoàn toàn với các quy tắc Bitcoin hiện hành.
Về cơ bản, Miniscript giống như một hộp Lego chứa các quy tắc chi tiêu Bitcoin. Mỗi khối đại diện cho một điều kiện nhỏ, được xác định chính xác, chẳng hạn như khóa công khai cần ký, khoảng thời gian phải trôi qua, hoặc giá trị bí mật cần được tiết lộ. Một khối có thể được hoán đổi cho một khối khác, cho phép xây dựng linh hoạt các đường dẫn chi tiêu thay thế. Bằng cách kết hợp các khối sử dụng các toán tử logic như AND, OR và Threshold, bạn có thể phát triển các điều kiện chi tiêu đơn giản hoặc phức tạp tùy theo nhu cầu. Quan trọng là, các chính sách của Miniscript có thể phân tích được: ví có thể kiểm tra trước ai có thể chi tiêu và trong điều kiện nào, giảm rủi ro tiền bị khóa bởi các tập lệnh không hợp lệ.
Phương pháp có cấu trúc này cho phép chúng ta diễn đạt các điều kiện chi tiêu một cách an toàn như sau:
- Cần có chữ ký của ít nhất 2 trong số 3 giám đốc - trừ khi tiền không được chuyển trong 6 tháng liên tiếp thì trong đó cần 1 chữ ký để chuyển tiền.
- Alice và Bob phải ở cùng nhau để chi tiêu số tiền, hoặc Charlie có thể tự mình chuyển trong đó sau khi chúng nằm im trong 1 năm.
- Hoặc tiết lộ hình ảnh gốc của giá trị băm hoặc đợi cho đến khi Block Height đạt 100 0000 (để chi tiêu).
Điều này có nghĩa là gì?
Sử dụng Miniscript, các điều kiện chi tiêu có thể vượt qua chữ ký đơn và chữ ký đa đơn giản. Bạn có thể định nghĩa các quy tắc như sau:
- "A và B có thể cùng nhau chi tiêu số tiền này bất cứ lúc nào; ngược lại, C có thể chi tiêu số tiền này một mình sau khi họ đã nhàn rỗi trong 1 năm";
- “Bây giờ cần có hai trong ba khóa công khai để ký cùng nhau; sau khi các quỹ không hoạt động trong sáu tháng, chỉ cần có một trong đó ba khóa công khai để ký cùng nhau.”
Các điều kiện linh hoạt này đáp ứng các trường hợp sử dụng thực tế như lập kế hoạch bất động sản, tài chính doanh nghiệp phân cấp và phục hồi khẩn cấp; chúng giúp người dùng Bitcoin thông thường dễ dàng tiếp cận bảo mật nâng cao. Quan trọng là, tất cả các điều kiện của Miniscript đều được áp dụng trực tiếp trên blockchain Bitcoin , không yêu cầu bất kỳ giả định tin cậy bổ sung nào ngoài chính mạng lưới Bitcoin .
2. Các khái niệm cốt lõi của Miniscript
Bây giờ, hãy cùng xem xét mô-đun cốt lõi của Miniscript. Mỗi thành phần (một đoạn mã Miniscript) đại diện cho một điều kiện chi tiêu cụ thể và khi kết hợp với nhau, chúng có thể tạo ra các chiến lược chi tiêu linh hoạt và an toàn.
2.1 Khóa công khai
Khóa công khai: pk(k)
Đây là điều kiện đơn giản nhất trong Miniscript, yêu cầu chữ ký từ một khóa công khai cụ thể. Nó đại diện cho điều kiện chi tiêu "chữ ký đơn" cơ bản và cũng được sử dụng làm cơ sở cho các điều kiện chi tiêu nâng cao hơn.
- Ví dụ : Yêu cầu chữ ký để chi tiền
- Bản thảo ngắn :
pk(Alice)
- Đoạn trích ngắn: Khóa công khai -
2.2 Đa chữ ký
Đa chữ ký: multi(k, …)
Các điều kiện chi tiêu đa chữ ký truyền thống yêu cầu k/n khóa công khai để cung cấp chữ ký. Các phần tử con của nó chỉ có thể là khóa công khai.
- Ví dụ : Cần có chữ ký của 2 trong số 3 khóa công khai để chi tiêu.
- Miniscript :
multi(2, Alice, Bob, Charlie)
- Đoạn trích ngắn: Nhiều chữ ký -
2.3 Khóa thời gian
Khóa thời gian ngăn chặn việc chi tiêu Bitcoin bị khóa trước một thời điểm nhất định. Đây là tính năng gốc của Bitcoin Script và là một trong mô-đun Miniscript hữu ích nhất.
Khóa thời gian áp dụng các quy tắc như "tiền chỉ có thể được chuyển sau sáu tháng" và "khóa công khai này chỉ có thể được sử dụng sau 30 ngày kể từ ngày tiền được gửi". Nút trong mạng lưới Bitcoin sẽ từ chối các giao dịch cố gắng chi tiêu số tiền này trước thời điểm này. Sau khi thời điểm này trôi qua, tiền có thể được chi tiêu bình thường và đường dẫn chi tiêu đã được kích hoạt sẽ không thể bị khóa lại.
Bitcoin Script có hai loại khóa thời gian: khóa thời gian tuyệt đối và khóa thời gian tương đối.
Khóa thời gian tuyệt đối: after(n)
Tiền sẽ bị khóa cho đến khi mạng lưới đạt đến một Block Height hoặc thời gian nhất định. Khi blockchain tăng trưởng vượt quá độ cao đó, các điều kiện chi tiêu với thời gian khóa này sẽ được kích hoạt và có sẵn vĩnh viễn.
- Ví dụ : Chi tiêu bằng chữ ký sau khi blockchain đạt đến dấu thời gian UNIX là 17 5000 0000 (khoảng tháng 6 năm 2025).
- Miniscript :
and_v(v:pk(Alice),after(1750000000))
Khóa thời gian tuyệt đối sẽ thiết lập thời gian cố định trong tương lai; sau khi khóa thời gian tuyệt đối hết hạn, việc thiết lập khóa thời gian tuyệt đối với cùng điều kiện sẽ không còn hiệu lực ràng buộc nữa.
- Đoạn trích ngắn: Khóa thời gian tuyệt đối -
Khóa thời gian tương đối: older(n)
Khóa tiền trong một khoảng thời gian cho đến khi hết hạn. Khoảng thời gian này có thể được xác định theo khối hoặc theo lịch (ngày, giờ). Khóa thời gian tương đối sẽ đếm ngược từ thời điểm UTXO liên quan được tạo; sau khi khoảng thời gian xác định trôi qua, đường dẫn chi tiêu liên quan sẽ được kích hoạt.
- Ví dụ : Sau 12960 khối (khoảng 90 ngày) tiền được khai thác, cần phải có chữ ký để chi tiêu chúng.
- Miniscript :
and_v(v:pk(Alice),older(12960)
Khóa thời gian tương đối của mỗi UTXO độc lập với nhau và không được đồng bộ hóa chỉ vì chúng nằm trong cùng một ví. Sau khi khóa thời gian tương đối của UTXO hết hạn, bộ đếm ngược có thể được "làm mới" bằng cách sử dụng cùng điều kiện khóa thời gian - nó có thể được chuyển đến một địa chỉ mới trong cùng ví để đặt lại khóa thời gian.
- Đoạn trích ngắn: khóa thời gian tương đối -
- - -
Khi thiết lập khóa thời gian, ngày lịch hiển thị trên giao diện phần mềm ví chỉ là ước tính. Nếu khóa thời gian được thiết lập dựa trên Block Height, khóa thời gian sẽ hết hạn khi mạng đạt đến chiều cao đó. Nếu khóa thời gian được thiết lập dựa trên thời gian lịch, mạng Bitcoin sẽ sử dụng giá trị trung bình của thời gian khối trong quá khứ (cụ thể là giá trị trung bình của dấu thời gian của 11 khối trong quá khứ) để xác định thời gian hiện tại, có thể khác với lịch và đồng hồ mà con người sử dụng. Do đó, thời gian giao dịch chi tiêu có hiệu lực phụ thuộc vào trạng thái của mạng Bitcoin và có thể không khớp chính xác với thời gian dự kiến (hiển thị trên giao diện).
2.4 Khóa băm
Khóa băm yêu cầu phải tìm ra một giá trị bí mật (tiền ảnh của nó) tương ứng với một giá trị băm. Nếu bí mật không được tiết lộ, khóa sẽ không được mở khóa.
- Ví dụ : Hình ảnh gốc đằng sau giá trị băm SHA256 H phải được tiết lộ và chữ ký phải được cung cấp trước khi có thể sử dụng.
- Miniscript :
and_v(v:pk(Alice),sha256(H))
Các loại khóa băm trong Miniscript
-
sha256(H)
- ảnh trước phải được SHA256 để tạo ra H (ảnh trước dự kiến là chuỗi thập lục phân 64 bit) -
hash256(H)
— tiền ảnh phải là H sau lần phép toán SHA256 liên tiếp (tiền ảnh dự kiến là chuỗi thập lục phân 64 bit) -
ripemd160(H)
– tiền ảnh phải trả về H sau thao tác RIPEMD-160 (tiền ảnh dự kiến là chuỗi thập lục phân 40 chữ số) -
hash160(H)
- cũng phải là HASH160 (chạy SHA256 trước, sau đó chạy RIPEMD160) để lấy H (tiền ảnh dự kiến là chuỗi thập lục phân 40 chữ số)
- Đoạn trích ngắn: Khóa băm -
2.5 Cơ sở logic: AND, OR, ANDOR
Ba toán tử logic này là nền tảng của Miniscript. Chúng mô tả cách kết hợp các điều kiện khác nhau (thường thông qua khóa thời gian).
VÀ : Để mở khóa, cả hai điều kiện đều phải đúng.
- Ví dụ : Việc chi tiêu cần có chữ ký của Alice và phải được thực hiện sau 12960 khối (khoảng 90 ngày) kể từ khi nhận được tiền.
- Miniscript :
and_v(v:pk(Alice),older(12960))
- Đoạn trích ngắn: VÀ -
- - -
HOẶC : Nếu ít nhất một trong hai điều kiện là đúng, vật phẩm sẽ được mở khóa.
- Ví dụ : Việc chi tiêu yêu cầu chữ ký từ một trong hai khóa công khai.
- Miniscript :
or_d(pk(Alice),pk(Bob))
- Đoạn trích ngắn: HOẶC -
ANDOR : Tiền được khóa bằng quy tắc if/else: nếu điều kiện đầu tiên là đúng, thì điều kiện thứ hai cũng phải đúng (để mở khóa); nếu điều kiện đầu tiên là sai, thì điều kiện thứ ba phải đúng (để chi tiêu).
- Ví dụ : Nếu Alice ký, thì Bob cũng cần phải ký; nếu Alice không ký, thì cần có chữ ký của Charlie.
- Miniscript :
andor(pk(Alice), pk(Bob), pk(Charlie))
- Đoạn trích ngắn: ANDOR -
2.6 Ngưỡng
Ngưỡng: ngưỡng(k, …)
Điều kiện ngưỡng linh hoạt hơn so với đa chữ ký. Chúng yêu cầu k điều kiện phải đúng; tuy nhiên, không giống như đa chữ ký, các phần tử con của chúng không bị giới hạn ở khóa công khai mà có thể là biểu thức logic, khóa thời gian, khóa băm, v.v.
- Ví dụ : Alice và Bob ký chung (để chi tiêu); sau khi số tiền không được sử dụng trong 90 ngày, mỗi người có thể chi tiêu riêng.
- Miniscript :
thresh(2,pk(Alice),s:pk(Bob),sln:older(12960))
- Đoạn trích ngắn: Ngưỡng -
2.7 Tập lệnh Taproot
Taproot cho phép bạn phân bổ nhiều nhánh chi tiêu cho quỹ của mình và chỉ cần tiết lộ một nhánh (là nhánh bạn thực sự sử dụng) khi chi tiêu. Nó cung cấp hai phương thức chi tiêu:
- Đường dẫn khóa : Chi tiêu bằng khóa công khai tổng hợp. Giao dịch này xuất hiện trên blockchain như một giao dịch chữ ký đơn thông thường, ngay cả khi khóa công khai được xây dựng bởi nhiều bên (ví dụ: sử dụng MuSig2).
- Đường dẫn tập lệnh : Sử dụng một trong đó các nhánh tập lệnh Taproot đã được cam kết. Chỉ nhánh bạn sử dụng sẽ được hiển thị, phần còn lại sẽ bị ẩn.
Cấu trúc này cân bằng giữa hiệu quả và quyền riêng tư: việc sử dụng hàng ngày có thể được thực hiện thông qua đường dẫn chính; trong khi các điều kiện chi tiêu phức tạp hơn có thể được ẩn cho đến khi cần đến.
- Ví dụ : Chi tiêu hàng ngày sử dụng khóa công khai tổng hợp (gọi là Alice) trong đường dẫn khóa; nếu khóa công khai tổng hợp không thể ký, đường dẫn tập lệnh cho phép Charlie chi tiêu bất kỳ lúc nào có chữ ký, trong khi Bob không thể chi tiêu cho đến 90 ngày sau khi quỹ được tạo.
- Miniscript :
tr(pk(Alice), {and_v(v:pk(Bob),older(12960)),pk(Charlie)})
- Đoạn trích ngắn: Tập lệnh Taproot -
2.8 MuSig2
MuSig2 là một chương trình đa chữ ký dựa trên Schnorr, cho phép nhiều bên tham gia cùng tạo ra một chữ ký tổng hợp. Trên Chuỗi , chữ ký tổng hợp này trông không khác gì chữ ký đơn thông thường. Điều này cải thiện quyền riêng tư và hiệu quả, đồng thời giảm quy mô và phí giao dịch.
- Ví dụ , việc chi tiêu cần có chữ ký của hai trong số Alice, Bob và Charlie. Chữ ký mà họ tạo ra nhìn lên blockchain , khiến việc nhận biết đó là ví bên long trở nên bất khả thi. Điều này giúp ví bên long trở nên riêng tư và hiệu quả hơn.
- Bản tóm tắt :
tr(musig(Alice, Charlie), {pk(musig(Alice, Bob)),pk(musig(Bob, Charlie))})
- Đoạn trích ngắn: MuSig2 -
3. Sử dụng Miniscript trong Nunchuk
3.1 Tạo ví Miniscript
Nunchuk giúp bạn dễ dàng xây dựng các điều kiện chi tiêu nâng cao bằng Miniscript. Bạn có thể bắt đầu với một mẫu có sẵn hoặc nhập tập lệnh tùy chỉnh của riêng mình.
Tạo ví miniscript trong Nunchuk: Trang chủ → Tạo ví mới → Miniscript
- Mẫu : Chọn điều kiện chi tiêu, chẳng hạn như "Mở rộng Đa chữ ký", "Đa chữ ký suy giảm" hoặc "Đa chữ ký linh hoạt". Mỗi mẫu cho phép bạn điều chỉnh các thông số như số lượng khóa công khai và độ trễ thời gian mà không cần viết bất kỳ mã nào.
- Tạo ví miniscript từ mẫu -
- Tập lệnh tùy chỉnh : Đối với người dùng nâng cao, bạn có thể dán điều kiện chi tiêu Miniscript dạng văn bản thuần túy hoặc nhập từ tệp. Nunchuk sẽ tự động phân tích cú pháp tập lệnh, kiểm tra tính chính xác và hiển thị điều kiện chi tiêu bằng tiếng Anh đơn giản.
- Tạo ví miniscript bằng các tập lệnh tùy chỉnh -
3.2 Ví Miniscript Group
Tính năng "Ví Nhóm" của Nunchuk cho phép nhiều người dùng sử dụng nhiều thiết bị cùng quản lý một ví Bitcoin, với giao tiếp dữ liệu crypto đầu cuối. Mỗi người tham gia giữ khóa riêng và các điều kiện chi tiêu được thực thi tập thể, độc lập với bất kỳ bên giám sát nào. Khi kết hợp với Miniscript, Ví Nhóm hỗ trợ các điều kiện bên long nâng cao, phản ánh các cơ chế quản trị thực tế. Giống như ví Miniscript tiêu chuẩn, bạn có thể bắt đầu với các mẫu có sẵn hoặc tự tạo các tập lệnh tùy chỉnh.
Để tạo ví nhóm miniscript trong Nunchuk, nhấn: Trang chủ → Tạo ví mới → Ví nhóm → Cài đặt → Miniscript.
Ví dụ: Hai giám đốc điều hành và bốn giám đốc của một công ty tạo ra một ví nhóm. Hoạt động hàng ngày chỉ cần chữ ký của hai giám đốc điều hành; tuy nhiên, trong một kênh chi tiêu khác, bất kỳ ba trong bốn giám đốc nào cũng có thể phê duyệt giao dịch.
3.3 Khôi phục ví Miniscript
Để khôi phục ví miniscript, ngoài các tài liệu phổ biến như private key và ảnh gốc, một tệp cấu hình ví được sao lưu (dưới dạng mô tả đầu ra hoặc tệp BSMS) là hoàn toàn cần thiết.
Định dạng BSMS là một gói tin của Bộ mô tả đầu ra (Output Descriptor), chứa dữ liệu như địa chỉ đầu tiên của ví. Dữ liệu này hoạt động như một tổng kiểm tra và cho phép định vị ví nhanh chóng. Tệp cấu hình ví hoạt động như một bản đồ, xác định cách ví được xây dựng.
Yêu cầu tương tự cũng áp dụng cho ví nhóm Miniscript: nếu không có tệp cấu hình ví, ví không thể được xây dựng lại, ngay cả khi có tất cả private key của thành viên.
Để khôi phục ví miniscript trong Nunchuk, nhấn:
Trang chủ → Tạo ví mới → Khôi phục ví hiện có → Khôi phục bằng BSMS/descriptors
Để khôi phục ví nhóm miniscript trong Nunchuk, nhấn:
Trang chủ → Tạo ví mới → Khôi phục ví hiện có → Khôi phục ví nhóm
- Khôi phục ví miniscript hoặc ví nhóm miniscript -
BSMS 1.0tr(xpub661MyMwAqRbcGgLWCDJNFcLYg8KgQimdffZdRobPJ585b93QjtCgqbPCo54DP3kpzwFpaZxoi6Snia3VDSV4oV81H4BxfaUbAzP2EpGHWDr/**,{multi_a(2,[8a0ba421/87'/0'/0']xpub6DWv19xigzHyBJJvE4iMTyTxQrn5TkBAr8k4gUJ8gycB8U7S7s8QRfBTa4Je2on9FE7jiUa3ijxuNyygEcpe8CGQUEz6W2PGtZ8SUJWc8fC/**,[d33f8331/87'/0'/0']xpub6C3RqV6jatGDLEiGpi92fsDLApCLC6SB28bMjwSaU4w3sdxmhWJRmzsxPDr8zv2hkyt1czkd3siMHJ6uAzN4T1gC5W6Vdd75XyJknN9N1Zb/**,[45c72f63/87'/0'/0']xpub6Ci35gULWq49uY6txiEHLJd8R9ESbadyed8zPACMgi6Cu5cd4BLG9p1ZDP3PnGNNaEHbGuy1uzEJDsEdWQck1C75DkaB13P8kX8UZkc7E8i/**),and_v(v:multi_a(1,[1e897bbf/87'/0'/0']xpub6CSCZZo8sDS2wjXUitr4FQUZwenEL1KcZrgYvi2mvSnVbYztYBxVLj5mKYcpNvB6RkLNEQzaaf8SWquzdhC6ncwasXk8STEjKwYRrd1QZcZ/**,[0cd15c3e/87'/0'/0']xpub6C3JCSGe5J2iqZymN7pKrYisD9po9FRqSRNot6561iLrzFjrPMNm8qn5VeYgTdWAtR66Kfr9oZWrjxSDLxB7GQ5dEi7hiUbjHyDxjaQxww6/**,[03c341e8/87'/0'/0']xpub6Bw2SYRUCc3Pcsgk39WkvkewHnxSLSERZmkUPBy91nrzKXehFBNLEzF2uJ2YiBhrS7kqagpGxBqhVziYawzUHePkB7pQGBMAnQmoYAxEAwz/**),after(1758819600))})/0/*,/1/*bc1pzmlufvqn5dpcquqysj4fr9skwxjj60wg7zyrpk4j8ftccz9ck9rs9fmjam
- Tệp BSMS cho ví miniscript -
4. Các tình huống ứng dụng và nghiên cứu điển hình
4.1 Các tình huống ứng dụng
Miniscript mở ra cánh cửa cho các chiến lược chi tiêu vượt qua đa chữ ký cơ bản. Một số ứng dụng thực tế bao gồm:
- Lập kế hoạch bất động sản : Một két sắt mà người thừa kế có thể mở khóa sau một khoảng thời gian nhất định, đồng thời trao cho chủ sở hữu ví toàn quyền kiểm soát trong đó tiền trong suốt cuộc đời của họ.
- Kho bạc công ty : Yêu cầu chữ ký của nhiều giám đốc điều hành để giải ngân tiền từ kho bạc trong khi che giấu các đường chi tiêu dự phòng cho trường hợp khẩn cấp.
- Lưu ký và Trao đổi : Sử dụng khóa băm và khóa thời gian để chi tiêu hoán đổi nguyên tử và bảo mật lưu ký mà không cần trung gian.
- Bảo hiểm : Các nhà cung cấp bảo hiểm có thể áp dụng các điều kiện chi trả (yêu cầu nhiều chữ ký) hoặc có thể giải ngân sau khi thời gian khóa hết và có báo cáo sự kiện có thể xác minh được.
- Vay mượn : Các khoản vay có thể được bảo đảm bằng tài sản thế chấp Bitcoin; tài sản thế chấp Bitcoin có thể thực thi việc trả nợ hoặc thanh lý thông qua các điều kiện ngưỡng, khóa thời gian và đường dẫn hoàn trả, giúp giảm nhu cầu sử dụng các trung gian đáng tin cậy.
- Khôi phục khẩn cấp : Ví thường yêu cầu 2 trong số 3 chữ ký đa năng để mở khóa, sau một thời gian dài không hoạt động, có thể kích hoạt điều kiện chi tiêu khôi phục khẩn cấp, trong đó khóa khôi phục hoặc một bộ khóa khôi phục có thể mở khóa tiền.
- Bảo vệ quyền riêng tư : Sử dụng Taproot và MuSig2, ngay cả các giao dịch chi tiêu phức tạp bên long bên nhìn lên Chuỗi sao chép lệnh, bảo vệ quyền riêng tư trong khi vẫn duy trì bảo mật mạnh mẽ.
4.2 Trường hợp
A) Kế thừa với khóa thời gian (phục hồi một lần và mãi mãi)
Ý tưởng đằng sau các điều kiện chi tiêu : Hiện đang sử dụng chữ ký đa năng 2 trong 3; sau khi bạn ngoại tuyến trong 6 tháng, một khóa dự phòng được chỉ định có thể rút tiền từ ví.
Tại sao điều này quan trọng : Giảm rủi ro mất tiền vĩnh viễn trong khi không trao quyền kiểm soát trực tiếp cho người khác.
Nguyên lý hoạt động : Chữ ký ngưỡng và đường dẫn phục hồi với khóa thời gian.
Ví dụ về bản thảo :
andor( pk(backup_key), older(4224679), multi(2,A,B,C) )
B) Kho bạc doanh nghiệp với cấp phép theo tầng
Ý tưởng đằng sau các điều kiện chi tiêu :
- Chi phí hàng ngày: Bất kỳ 2 giám đốc tài chính nào + 1 máy ký chung (như mô-đun đun ký phần cứng (HSM)/KMS (máy chủ quản lý khóa))
- Chi tiêu lớn: Bất kỳ 2 giám đốc tài chính + giám đốc tài chính (CFO)
- Chuyến thăm trì hoãn/khẩn cấp: Bất kỳ 2 Giám đốc Tài chính nào cũng có thể chi tiêu
Mục đích sử dụng : Sự tiện lợi và an toàn hàng ngày.
Cách thức hoạt động : Ngưỡng/AND với nhánh OR và tùy chọn khóa thời gian. Đội ngũ chọn nhánh họ muốn sử dụng.
Ví dụ về bản thảo :
and_v( or_c( pk(HSM), or_i( v:pk(CFO), v:older(4195485) ) ), multi(2,LeadA,LeadB,LeadC))
C) Kiểm soát lưu ký cho các giao dịch OTC
Ý tưởng đằng sau các điều kiện chi tiêu : Người mua + Người bán hoặc sau khi thời gian kết thúc, một trong hai bên + trọng tài
Lý do quan trọng : Không có người giám hộ. Lộ trình hòa giải rõ ràng, dựa trên quy tắc.
Nguyên lý hoạt động : Logic OR với điều kiện dự phòng khóa thời gian.
Ví dụ về bản thảo :
thresh(2, pk(Buyer), s:pk(Seller), sj:and_v( v:pk(Arbiter), n:older(4194472) ) )
D) Bên long ví khó theo dõi trên Chuỗi
Ý tưởng đằng sau các điều kiện chi tiêu : ba thiết bị có quyền kiểm soát chung; một khóa công khai chung duy nhất có thể được sử dụng để chi tiêu, do đó số lượng người ký không bị lộ.
Tại sao điều này quan trọng : Đạt được bảo mật đội ngũ mà không làm lộ cấu trúc quản trị của bạn.
Cách thức hoạt động : Bạn có thể chọn giữa Taproot và MuSig2. MuSig2 tổng hợp nhiều người ký thành một khóa công khai duy nhất; Taproot ẩn các nhánh chưa sử dụng. Trong một đường dẫn tập lệnh, chỉ những nhánh đã được thực thi mới được hiển thị.
Ví dụ về Miniscript (Taproot) :
tr( musig(A,B), { pk(musig(A,C)), pk(musig(B,C)) } )
5. Kết luận
Bitcoin luôn có khả năng sử dụng các điều kiện chi tiêu phong phú, nhưng ngôn ngữ lập trình cấp thấp của nó quá khó và nguy hiểm đối với hầu hết người dùng. Miniscript đã thay đổi điều này bằng cách cung cấp một ngôn ngữ có cấu trúc, an toàn và có thể cấu hình để thể hiện các điều kiện chi tiêu.
Với Miniscript, các ứng dụng nâng cao như lập kế hoạch bất động sản, kho bạc công ty, hoán đổi nguyên tử, quyền giám hộ bảo vệ quyền riêng tư, v.v. đều nằm trong tầm tay.
Là một ví phần mềm, Nunchuk mang Miniscript đến một giao diện thân thiện với người dùng, mang đến cho hệ sinh thái Bitcoin một tiêu chuẩn mới mạnh mẽ. Cuối cùng, các hợp đồng phức tạp có thể được thể hiện một cách an toàn, dễ phân tích và dễ đọc - mở ra thế hệ tiếp theo của hệ thống lưu ký Bitcoin và thiết kế hợp đồng thông minh.
Chú thích: Thiết bị chữ ký phần cứng hỗ trợ MiniScript
(Cập nhật lần cuối vào ngày 27 tháng 8 năm 2025)
- Hỗ trợ cho SegWit Miniscript thuần túy : Tapsigner, Coldcard (phần mềm EDGE v6.3.3 trở lên), Jade (phần mềm v1.0.30 trở lên), Jade Plus (phần mềm v1.0.30 trở lên), Ledger (phần mềm v2.1.0 trở lên), Spectre DIY (phần mềm v1.5.0 trở lên)
- Hỗ trợ Taproot Miniscript : Coldcard (phần mềm EDGE v6.3.3 trở lên), Ledger (phần mềm v2.2.1 trở lên), Spectre DIY (phần mềm v1.9.0 trở lên)
- Hỗ trợ MuSig2 : Chưa (tức là hiện tại chỉ có thể sử dụng khóa phần mềm)
(qua)