Kraken

Bằng chứng dự trữ

Kiểm toán

Tìm hiểu thêm về quy trình kiểm toán của Kraken

Quy trình Kiểm toán Bằng chứng Dự trữ của Kraken  

Giới thiệu

Tài liệu này cung cấp thông tin cần thiết và các hướng dẫn liên quan đến quy trình kiểm toán của Kraken.

Kraken dự trữ 100% ký quỹ của khách hàng, và chúng tôi sử dụng kiểm toán xác minh mã hóa độc lập để chứng minh với các bên thứ 3, bao gồm khách hàng của chúng tôi, rằng quỹ của khách hàng được dự trữ hoàn toàn. Sự minh bạch và việc kiểm toán được xác minh độc lập là yếu tố then chốt để đảm bảo công ty dự trữ 100% quỹ của khách hàng. Kế hoạch Bằng chứng Dự trữ công khai trên lý thuyết có thể thực hiện được. Tuy nhiên, cũng cần cân nhắc kỹ lưỡng những yếu tố bên ngoài, như quyền riêng tư, khi thực hiện một Kế hoạch Bằng chứng Dự trữ công khai cụ thể. Chúng tôi tin rằng các sàn giao dịch và ví điện tử phải xây dựng lòng tin thông qua việc giải trình và chúng tôi có trách nhiệm đáp ứng mong muốn của cộng đồng về tính minh bạch.

Trong suốt những tuần qua, Kraken đã phát triển và hoàn thiện thành công hệ thống kiểm toán tiên phong, độc lập và được xác minh mã hóa. Chúng tôi tự hào công bố quy trình này tới cộng đồng tiền kỹ thuật số trên toàn cầu. Chúng tôi tin rằng ngành công nghiệp Bitcoin có khả năng đảm bảo và giải trình vượt trội hơn so với các dịch vụ tài chính truyền thống, và chúng tôi hướng tới trách nhiệm tối ưu hóa sự minh bạch.

Thực trạng hiện tại

Dự thảo của Greg Maxwell về việc các sàn giao dịch/ ví điện tử chứng minh dự trữ Bitcoin của mình đã tạo tiền đề thúc đẩy cho sáng kiến này. [1]

Đến nay, kiểm toán trong ngành Bitcoin vẫn chưa được rõ ràng, chưa hoàn thiện và không có bằng chứng mã hóa có thể xem công khai cũng như có thể xác minh một cách độc lập. Kraken hướng đến việc cung cấp Bằng chứng Khái niệm (Proof of Concept) và thiết lập tiêu chuẩn ngành cao hơn về tính minh bạch và khả năng giải trình từ hệ sinh thái tiền kỹ thuật số mà các sàn giao dịch khác có thể theo đó tiếp thu và phát triển.

Chất lượng Quy trình

Theo dự thảo của Maxwell, các công ty bitcoin sẽ phải tiết lộ tất cả các địa chỉ liên quan đến việc tăng giảm số dư. Phương án này sẽ dẫn tới việc các sàn giao dịch hoặc nhà cung cấp ví điện tử bị công khai ví bitcoin và tổng tài sản nắm giữ, cũng như thông tin thương mại nhạy cảm và tiềm ẩn rủi ro bảo mật cho công ty và người dùng. Tệ hơn, nó dẫn tới việc vi phạm nghiêm trọng quyền riêng tư của người dùng, bao gồm việc các bên thứ ba có thể lần theo lịch sử và thói quen sử dụng tài sản cá nhân, hoạt động tài chính mà không cần lý do truy xuất hay thủ tục pháp lý nào..

Quy trình của chúng tôi không yêu cầu tiết lộ tổng số dư, các địa chỉ, hay các khóa ra bên ngoài. Bằng việc kết hợp và phát huy sức mạnh của cả người kiểm toán đáng tin cậy và mật mã có thể xác minh công khai, kiểm toán của Kraken cân bằng hợp lý giữa bảo mật riêng tư và công khai minh bạch.

Vì Bitcoin là một đồng tiền kỹ thuật số có ưu thế trên thị trường, nên ban đầu chúng tôi chỉ tập trung kiểm toán dự trữ Bitcoin. Tuy nhiên, kiểm toán các đồng tiền khác sẽ được cân nhắc trong tương lai.

Tổng quan Quy trình

  • Giai đoạn 1 - Kiểm toán kiểm tra toàn bộ quỹ trong ví của Kraken

    Kraken cung cấp cho kiểm toán tất cả các địa chỉ công khai và ký chúng. Khối băm tại thời điểm ký là một phần của tin nhắn đã ký và có thể được sử dụng như dấu thời gian ghi nhận thời điểm ký. Sau đó, chữ ký của những địa chỉ công khai này sẽ được xác minh, kiểm toán viên sẽ sử dụng bitcoin blockchain để truy xuất tổng khối lượng quỹ hiện hữu trong những địa chỉ này tại thời điểm đó.

    Mã yêu cầu cho giai đoạn này được viết bởi Michael Gronager, Giám đốc điều hành (COO) của Payward, và có thể hoàn toàn trở thành mã nguồn mở trong tương lai. Tuy nhiên, phần lớn mã này đã là mã nguồn mở vì mã được viết dựa trên libcoin. [2]

  • Giai đoạn 2 - Kiểm toán viên kiểm tra xem liệu số dư tài khoản của người dùng Kraken có khớp với số quỹ có trong ví của Kraken

    Kraken cung cấp cho kiểm toán viên số dư tài khoản BTC của từng người dùng và tạo ra một cây Merkle. Kiểm toán viên sẽ công bố nút băm rễ (root node hash) cho tất cả mọi người và xác nhận (nếu đúng) rằng tổng giá trị nắm giữ biểu hiện bởi băm rễ gần bằng với giá trị trong ví Kraken từ blockchain. Quy trình này cũng đảm bảo rằng Kraken không hề giấu giếm bất cứ thứ gì trong bất cứ node nào hướng về node rễ.

    Trong giai đoạn kiểm toán này, kiểm toán viên sẽ được phép truy cập vào mã nguồn của chương trình tạo cây và tệp dữ liệu số dư tài khoản cá nhân. Kraken đưa ra mã C++ cho giai đoạn này tuân thủ theo giấy phép MIT: https://github.com/payward/krakendb

  • Giai đoạn 3 - Người dùng xác minh một cách độc lập rằng số dư tài khoản của họ được báo cáo trong dữ liệu mà kiểm toán viên sử dụng

    Kraken thông tin đến cho người dùng về số dư mà chúng tôi báo cáo cho kiểm toán viên, cũng như các node (và các node gần kề) trong tài khoản của họ, liên kết với node rễ (thông tin khớp với dữ liệu được kiểm toán viên công bố). Chúng tôi cũng công khai cách băm được sử dụng để tạo ra băm cho node của người dùng, để họ có thể xác minh rằng node thực sự thể hiện khối lượng mà chúng tôi công bố.

    Cách này sẽ cho phép người dùng kiểm tra một cách độc lập rằng liệu tài khoản của họ có được báo cáo trong dữ liệu mà kiểm toán viên đã xác minh hay không.

Khuyết điểm

Trong phần này, chúng tôi mô tả một vài thiếu sót của quy trình kiểm toán. Lưu ý đây không phải là một danh sách toàn bộ các điểm yếu. Tuy nhiên, vì chúng tôi coi trọng tính minh bạch đối với người dùng, chúng tôi sẽ đưa ra bản báo cáo không chính thức về những thiếu sót cụ thể mà chúng tôi xác định được trong quy trình kiểm toán này.

Khác với tài sản vật chất, thông tin không cần tới sự chuyển quyền sở hữu từ người này để trở thành quyền sở hữu của người khác. Do đó, Kraken hoặc các công ty khác sử dụng phương pháp kiểm toán này không thể chứng minh rằng các khóa riêng tư không bị những kẻ tấn công sao chép. Chúng tôi cũng không thể chứng minh chúng tôi có quyền sở hữu các khoản ký quỹ đã được kiểm toán. Chúng tôi chỉ có thể chứng minh tại thời điểm kiểm toán, chúng tôi là một trong những người sở hữu các khóa riêng tư.

Việc kiểm toán đầy đủ có thể sẽ không được thực hiện theo yêu cầu mà không cần thông báo trước. Với việc cung cấp thông tin yêu cầu, cấu trúc kiểm toán và biện pháp bảo mật ví lạnh theo tiêu chuẩn của ngành tại thời điểm này, quy trình kiểm toán trong ngày là bất khả thi. Chúng tôi hình dung tới việc xây dựng một quy trình kiểm toán 'nhẹ' tiềm năng theo quy trình kiểm toán đầy đủ trước đó, dựa vào các chữ ký đã được tạo để có thể thực hiện một cách thường xuyên hơn.

Kiểm toán viên phải được tin cậy và có năng lực cao. Cộng đồng phải tin rằng kiểm toán viên coi trọng danh tiếng của họ và có khả năng về mặt kỹ thuật. Trong quy trình này, kiểm toán viên có trình độ kỹ thuật thấp hoặc ít cẩn trọng có nhiều khả năng bị công ty được kiểm toán lừa gạt. Cũng có nhiều cơ hội để kiểm toán viên cố ý hoặc vô tình xâm phạm thông tin bí mật của khách hàng và công ty. Cả hai bên kiểm toán và được kiếm toán phải cân nhắc ai là người cung cấp máy tính, không gian kiểm toán, blockchain, kết nối internet, bộ định tuyến, DNS, ... Nếu mục tiêu là để che giấu một vụ lừa đảo hàng triệu Đô-la, ta có thể tưởng tượng đây là thời gian tuyệt vời để thỏa hiệp với kiểm toán.

Việc kiểm toán không thể được gia hạn liên tục theo thời gian thực. Khả năng các khóa bị mất hoặc tiền bị đánh cắp kể từ lần kiểm toán cuối có thể xảy ra. Kiểm toán đầy đủ giúp xác nhận rằng các khóa vẫn chưa bị mất, mặc dù nó tạo ra mối đe dọa lớn hơn vì cần phải sử dụng các khóa cho ví lạnh để thực hiện kiểm toán.

Người được kiểm toán có thể tạm thời mượn quỹ hoặc chia sẻ khóa với chủ sở hữu quỹ thật sự để vượt qua quy trình kiểm toán.

Kiểm toán viên có thể thông đồng hoặc chịu thua trước các mối đe dọa từ người được kiểm toán.

Nền tảngLiên tục

Chúng tôi dự định thực hiện kiểm toán thường xuyên liên tục. Vì không có kiểm toán viên nào được tin tưởng một cách toàn diện, có thể chúng tôi sẽ sử dụng kiểm toán viên khác nhau hoặc nhiều kiểm toán viên cho mỗi lần kiểm toán. Điều này nhằm đáp ứng sự đòi hỏi từ những người nghi ngờ về chất lượng của một kiểm toán viên cá nhân cụ thể.

Những Thay đổi và Cải tiến trong tương lai

Chúng tôi hy vọng nhận được phản hồi từ cộng đồng để giúp chúng tôi và các bên khác cải thiện quy trình này cho các cuộc kiểm toán trong tương lai. Là thành viên của cộng đồng này, chúng tôi cũng hy vọng hợp tac với các tổ chức như DATA (www.datauthority.org) để giúp phát triển các tiêu chuẩn cơ bản, công cụ có thể mở rộng và hướng dẫn toàn diện cho các bên khác trong ngành để thực hiện kiểm toán tương tự.

Tham khảo

[1] Tóm tắt bởi Zak Wilcox: https://iwilcox.me.uk/2014/proving-bitcoin-reserves. Chúng tôi chân thành cảm ơn Greg Maxwell vì các ý tưởng của ông ấy.

[2] libcoin là việc chuyển đổi bitcoin thành các thư viện mô-đun có thể tái sử dụng: https://github.com/libcoin/libcoin

Làm thế nào để xác nhận số dư tài khoản Kraken cá nhân trong kiểm toán Kraken

Xem thêm: Quy trình Kiểm toán bằng chứng dự trữ của Kraken.

Các hướng dẫn này giải thích cách để xác minh bằng mật mã số dư tài khoản Kraken và đưa nó vào quy trình kiểm toán.

Việc xác minh này sẽ phản ánh số dư Bitcoin (XBT) trong tài khoản của bạn tại thời điểm kiểm toán.

 

  • Bước 1

    Nếu bạn chưa đăng nhập, hãy đăng nhập vào tài khoản Kraken của bạn.

    Truy cập https://www.kraken.com/ và đảm bảo rằng thanh địa chỉ trình duyệt của bạn hiển thị "https://www.kraken.com/"

  • Bước 2

    Chọn thẻ "Nạp/Rút" -> thẻ con "Kiểm toán" -> "Bitcoin (XBT)" bên phía trái.

    Hình 1. Giao diện Kiểm toán Kraken Bitcoin

  • Bước 3

    Xem thông tin về tài khoản của bạn được kiểm toán viên xác minh

    •  Thời gian kiểm toán là dấu thời gian được sử dụng bởi kiểm toán viên.

    •  Mã đệ trình là mã 64 bit salt.

    •  Số lượng Bitcoins được giữ trong tài khoản của bạn tại thời điểm kiểm toán. Đây là giá trị số dư tài khoản của bạn mà chúng tôi đã cung cấp cho kiểm toán viên.

    • Ghi chú bao gồm thông tin từ kiểm toán viên chứng minh hàm băm gốc được sử dụng cho cuộc kiểm toán. Một liên kết đến một báo cáo chi tiết, đã ký cũng được cung cấp.

    •  Băm từ nút băm của bạn đến hàm băm gốc, bao gồm cả băm liền kề. Các giá trị băm trong đường dẫn trực tiếp của bạn được hiển thị bằng dấu hoa thị (*) để phân biệt chúng với băm nút liền kề. Với các giá trị băm này, bạn có thể xác minh rằng nút của bạn đã được bao gồm trong băm gốc:

    • Dòng đầu tiên phải khớp với giá trị băm gốc do kiểm toán viên đưa ra.

      Nếu bạn muốn xác minh hàm băm của riêng mình (hàm băm cuối cùng có dấu * trong danh sách), hãy làm như sau:

      sha256(sha256(<mã đệ trình> || ":" || <số tiền viết liền không dấu phân cách, không có số 0 đứng đầu>))

      Giá trị đó phải khớp với giá trị cuối cùng được đưa ra trong giá trị băm.

      Mã ví dụ

      Mã đệ trình: 379377cd8190f9bf

      Số tiền: 0.01500000

      Python

      import hashlib; print(hashlib.sha256(hashlib.sha256(b'379377cd8190f9bf:1500000').digest()).hexdigest());
      

      PHP

      echo hash('sha256', hash('sha256', '379377cd8190f9bf:1500000', true));
      

      Kết quả

      66b51ba0f4a5cf8278acac6782ffdfb9a64b9f7c895bc308266b0757c7025b27
      

      Bạn hoàn toàn có thể xác minh các nhánh Merkle của mình bằng cách thực hiện băm của từng cặp băm (hoặc tuple). Định dạng là:

      sha256(left-hash || right-hash)
      

      Kết quả phải khớp với hàm băm tuple trước (hoặc hàm băm gốc) với dấu * trong đó. Điều này sẽ được thực hiện cho tất cả các tuple.

      Ngoại trừ hàm băm gốc, tất cả các giá trị băm được đưa ra dưới dạng tuple, đại diện cho hàm băm trái và hàm băm phải theo thứ tự đó. A * được trao cho các giá trị băm đại diện cho các nút trực tiếp của bạn.

      Mã ví dụ:

      Các băm:

      306daae528dc137c9053554c45e90a631ef859490a3ede651d488135602500a3* c3fb1f931c681f4a7b779fb19e107bba156cae78c3a928707c42b395b056541b* 5e01ee0fee85641dd5cd4e3005792f973a2a1362180783041eb1719163b1d21c
      

      Python

      import hashlib; print(hashlib.sha256(b'c3fb1f931c681f4a7b779fb19e107bba156cae78c3a928707c42b395b056541b5e01ee0fee85641dd5cd4e3005792f973a2a1362180783041eb1719163b1d21c'.decode('hex'))).hexdigest();
      

      PHP

      echo hash('sha256', hex2bin('c3fb1f931c681f4a7b779fb19e107bba156cae78c3a928707c42b395b056541b5e01ee0fee85641dd5cd4e3005792f973a2a1362180783041eb1719163b1d21c'));
      

      Kết quả

      306daae528dc137c9053554c45e90a631ef859490a3ede651d488135602500a3