Kraken

Підтвердження резервів

Аудит

Дізнайтеся про процес аудиту Кракена

Процес аудиту резервів Кракена  

Вступ

Цей документ містить інформацію і рекомендації щодо процесу аудиту в Кракені.

Кракен має повні резерви, і ми застосовуємо незалежний криптографічно перевірений аудит, щоб довести третім особам, включаючи наших клієнтів, що їхні кошти зберігаються належним чином. Прозорість і незалежна перевірка аудитів мають вирішальне значення для гарантії, що компанії мають повний резерв коштів клієнтів. Технічно можливо реалізувати публічну схему підтвердження резервів. Проте, існують важливі зовнішні фактори, в тому числі конфіденційність користувачів, які повинні бути ретельно розглянуті при конкретній реалізації загальнодоступної схеми підтвердження резервів. Ми вважаємо, що біржі і гаманці повинні зміцнювати довіру до себе подаючи підзвітність, і що ми несемо відповідальність за прагнення спільноти до прозорості.

За останні кілька тижнів Кракен успішно розробив і провів провідний в галузі незалежний криптографічно перевірений аудит. Ми з гордістю готові надати огляд цього процесу користувачам цифрових валют. Ми вважаємо, що біткоїн-індустрія здатна забезпечити рівень впевненості та підзвітності, який перевершує традиційну індустрію фінансових послуг, і ми прагнемо вести цей процес до оптимальної прозорості.

Поточна ситуація

Поштовхом до цієї ініціативи стала пропозиція Грега Максвелла щодо підтвердження біржами/гаманцями, своїх біткоїн резервів. [1]

До цього часу, аудити в біткоїн індустрії були непрозорими, поверхневими та без загальнодоступних і незалежно перевірених криптографічних підтверджень. Кракен прагне довести концепцію та встановити галузеві стандарти більшої прозорості та підзвітності з боку екосистеми цифрових валют, за якою інші можуть слідувати та вдосконалювати.

Якість процесу

Пропозиція Максвелла вимагла б від криптокомпаній розкрити всі свої адреси, що містять їх баланси. Цей метод привів би до публічного доступу до крипто-гаманців бірж або провайдерів гаманців, а також до інформації про загальні фонди - це інформація, яка є комерційно чутливою і представляє потенційні загрози безпеки як для компаній, так і для користувачів. Гірше того, це призведе до порушення недоторканності приватного життя користувачів, в результаті чого історія і траєкторія особистих збережень і фінансової діяльності користувачів стала б доступна для відстеження третіми особами без будь-якої причини або належних для цього процедур.

Наш процес не вимагає від нас розкриття загального балансу, адрес або ключів для громадськості. Об'єднуючи і використовуючи сильні сторони, як перевіреного аудитора, так і криптографії, що перевіряється громадськістю, аудит Кракен представляє ідеальний баланс між конфіденційністю і прозорістю.

Оскільки біткоїн є домінуючою криптовалютою, наш початковий аудит охопить тільки резерви біткоїн. Проте, аудит для інших активів буде розглядатися для майбутнього розвитку.

Огляд процесу

  • Етап 1 - Аудитор перевіряє кошти всього гаманця Кракен

    Кракен надає аудитору всі публічні адреси і підписує їх. Хеш-блок під час підпису є частиною підписаного повідомлення і може використовуватися як мітка часу для того, коли було зроблено підпис. Потім, підписи цих публічних адрес будуть перевірені, і аудитор буде використовувати біткойн-ланцюжок для вилучення загальної суми, доступної за цими адресами в певний момент часу.

    Код, необхідний для цього етапу, був написаний Майклом Гронагером, операційним директором Payward, і в майбутньому код може бути повністю у відкритому доступі. На даний момент, більша частина коду вже є у відкритому доступі, так як код заснований на libcoin. [2]

  • Етап 2 - Аудитор перевіряє, чи збігаються баланси користувачів Кракен із коштами на гаманці Кракен

    Кракен надає аудитору баланс BTC кожного з наших користувачів і генерує дерево Меркле. Аудитор опублікує хеш кореневого вузла для публічного перегляду, і підтвердить, якщо це правда, що загальна кількість активів, представлена кореневим хешем, максимально дорівнює величині нашого гаманця на блокчейні. Цей етап також гарантує, що Кракен нічого не приховує в жодному з вузлів, що ведуть до кореневого вузла.

    На цьому етапі аудиту, аудитор матиме доступ до вихідного коду програми, що генерує дерево, і до файлу з даними по сальдо окремих рахунків. Кракен випустив код С ++ для цього етапу під ліцензією МІТ: https://github.com/payward/krakendb

  • Етап 3 - Користувачі самостійно перевіряють, що залишки їх рахунків були включені в дані, що використовуються аудитором

    Кракен надає користувачам суму, яку ми повідомили аудитору, а також вузли (і суміжні вузли) від їх облікового запису до кореня (що відповідає тому, що опубліковано аудитором). Ми також розкриваємо метод хешування, який використовується для генерації хешу для їх вузла, щоб вони могли переконатися, що вузол дійсно представляє заявлену суму.

    Це дозволить користувачам самостійно перевірити, чи внесений їхній акаунт в дані, перевірені аудитором.

Недоліки

У цьому розділі ми опишемо деякі недоліки даної перевірки. Зверніть увагу, що це не вичерпний список недоліків. Однак, оскільки ми цінуємо прозорість у відносинах з нашими користувачами, ми надаємо неофіційну інформацію про конкретні недоліки, які ми виявили в процесі перевірки.

На відміну від фізичних активів, інформація не повинна бути вилучена з одного джерела, щоб бути переданою для ознайомлення іншим. Таким чином, Кракен або інша компанія, яка використовує цей метод аудиту, не може довести, що зловмисник не продублював закриті ключі. Ми також не можемо довести, що у нас є виключне право володіння перевіреними засобами. Ми можемо тільки сказати, що на момент перевірки у нас був доступ до закритих ключів.

Повний аудит, швидше за все, не може бути виконаний без попереднього повідомлення. Беручи до уваги необхідну інформацію, структуру аудиту та галузеві стандарти безпеки, незапланований аудит в той же день неможливий. Ми припускаємо, що потенційний «легкий» аудит заснований на попередньому повному аудиті, може виконуватися частіше.

Аудитор повинен бути довіреною особою та бути компетентним. Товариство повинне вірити, що аудитор дорожить своєю репутацією і технічно досвідчений. У цьому процесі аудиту є кілька можливостей, коли замовник аудиту може обдурити менш технічного, - аудитора. Аудитор також має можливість навмисно або ненавмисно скомпрометувати конфіденційну інформацію про компанію та клієнта. І аудитор, і той, кого перевіряють, повинні враховувати те, хто надає комп'ютер, простір аудиту, блокчейн, підключення до інтернету, маршрутизатор, і т. д. Якщо мета полягає в тому, щоб приховати шахрайство на мільярд доларів, можна уявити, що ми підемо на все, щоб скомпрометувати аудит.

Аудит не оновлюється постійно в режимі реального часу. Цілком можливо, що ключі були втрачені або кошти були вкрадені з моменту останнього аудиту. Повний аудит має підтвердження того, що ключі не були втрачені, хоча створює велику загрозу, оскільки для проведення аудиту необхідно використовувати ключі холодного зберігання.

Той, кого перевіряють, може тимчасово позичати кошти або ділитися ключами з справжнім власником засобів для проходження аудиту.

Аудитор може вступати в змову або піддаватися погрозам з боку того, кого перевіряють.

Постійна основа

Ми маємо намір регулярно проводити аудит. Оскільки немає довіреного аудитора, ми можемо щоразу залучати іншого аудитора чи декількох аудиторів. Це повинно задовольнити тих, хто може сумніватися в повноваженнях окремого аудитора.

Майбутні зміни та вдосконалення

Ми сподіваємось отримувати відгуки від спільноти, котрі допоможуть нам та іншим вдосконалити цей процес для майбутніх аудитів. Як члени цієї спільноти, ми також сподіваємось працювати з галузевими організаціями, такими як DATA (www.datauthority.org) щоб допомогти розробити базові стандарти, масштабовані інструменти та всебічний посібник для інших в галузі для проведення подібних аудитів.

Посилання

[1] Резюме Зака Вілкокса: https://iwilcox.me.uk/2014/proving-bitcoin-reserves. Ми дякуємо Грегу Максвеллу за його ідеї.

[2] libcoin - це перетворення біткойна в модульні бібліотеки для багаторазового використання: https://github.com/libcoin/libcoin

Як перевірити залишок вашого Кракен акаунта під час аудиту Кракен

Також ознайомтеся: Процес аудиту резервів Кракена.

Ці інструкції пояснюють, як криптографічно перевірити баланс вашого рахунку в Kraken та його включення до аудиту.

Ця перевірка відображатиме залишок біткоїна (XBT) у вашому акаунті на момент аудиту.

 

  • Крок 1

    Увійдіть у свій Кракен акаунт.

    Перейдіть на https://www.kraken.com/ та переконайтеся, що в адресному рядку веб-переглядача відображається "https://www.kraken.com/"

  • Крок 2

    Зайдіть у розділ "Перекази" -> підрозділ "Аудит" -> "Bitcoin (XBT)" ліворуч.

    Зображення 1. Кракен біткоїн Аудит 

  • Крок 3

    Ознайомтеся з підтвердженою аудитором інформацією про ваш рахунок

    •  Час аудиту - фактично, мітка часу, котру використав аудитор.

    •  Код подання, що є 64 бітною сіллю.

    •  Сума біткоінів, що зберігаються на вашому рахунку на момент аудиту. Це значення балансу для вашого рахунку, яке ми надали аудитору.

    • Примітки включають інформацію аудитора, що підтверджує кореневий хеш використаний для аудиту. Також надається посилання на підписаний детальний звіт.

    •  Хеші з вашого хеша вузла до кореневого хеша, включаючи суміжні хеші. Значення хешу у вашому прямому шляху відображаються зірочкою (*), щоб відмежувати їх від суміжного хеша вузла. За допомогою цих хешей можна переконатися, що ваш вузол був включений у корінь:

    • Перший рядок повинен відповідати корінному хеш-значенню, заданому аудитором.

      Для перевірки свого власного хеш вузла (останній хеш із * у списку) виконайте:

      sha256(sha256(<submission code> || ":" || <сума без десяткової коми чи подальших нулів>))

      Це значення має відповідати останньому значенню, вказаному в хешах.

      Приклад коду

      Код подання: 379377cd8190f9bf

      Сума: 0.01500000

      Python

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

      PHP

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

      Результат

      66b51ba0f4a5cf8278acac6782ffdfb9a64b9f7c895bc308266b0757c7025b27
      

      Ви можете повністю перевірити свої гілки Merkle, зробивши хеш кожної пари хешей (або "кортеж"). Формат:

      sha256(left-hash || right-hash)
      

      Результат повинен збігатися з попереднім хешем кортежу (або кореневим хешем) з * у ньому. Це було б зроблено для всіх кортежів.

      За винятком кореневого хеша, всі хеші подаються у вигляді кортежів, представляючи лівий хеш та правий хеш у тому порядку. * Надається хешам, які представляють ваші прямі вузли.

      Приклад коду:

      Хеші:

      306daae528dc137c9053554c45e90a631ef859490a3ede651d488135602500a3* c3fb1f931c681f4a7b779fb19e107bba156cae78c3a928707c42b395b056541b* 5e01ee0fee85641dd5cd4e3005792f973a2a1362180783041eb1719163b1d21c
      

      Python

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

      PHP

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

      Результат

      306daae528dc137c9053554c45e90a631ef859490a3ede651d488135602500a3