Статьи

BigchainDB: блокчейн и хранилище данных

С тех пор, как я написал этот пост , многое изменилось для BigchainDB и пространства блокчейнов в целом, поэтому пришло время пересмотреть и обновить то, что блокчейн может оказать на одну из более фундаментальных частей традиционного вычислительного пространства: хранение данных ,

Изначально созданная в качестве технологии для замены блокчейна Биткойн в проекте отслеживания цифровых произведений Ascribe, BigchainDB расширилась до компонента заброшенной IPDB, а теперь является слоем хранения для смелого протокола Ocean .

Это изменение в использовании привело к изменениям в основе и реализации BigchainDB, как и закрытие RethinkDB , вынудив команду переключить механизм хранения на стойкую MongoDB . Слой блокчейна в верхней части базы данных, который обеспечивает поддержку транзакций , помогает гарантировать изменение базы данных и добавляет дополнительные элементы управления и безопасности, но достиг зрелости, когда BigchainDB достигнет 2.0 в 2018 году .

Все эти изменения теперь означают, что BigchainDB рекомендует вам использовать их общедоступную сеть вместо развертывания ваших экземпляров. Этот подход несколько противоречит традиционной практике распределенных баз данных, но в большей степени соответствует эволюции проектов на основе Blockchain за последние несколько лет, помогает BigchainDB монетизировать свою платформу (с помощью модели ICO или SaaS) и представляет собой интересное изменение. Время покажет, удобны ли клиенты для хранения данных в общедоступной сети, но с маркерами доступа, обеспечивающими безопасность и конфиденциальность, концептуально это не слишком отличается от использования размещенной в облаке базы данных.

Если вы хотите, вы все равно можете установить свои собственные экземпляры BigchainDB , но я чувствую, что компания будет все чаще призывать вас не делать этого.

Какой бы вариант вы ни выбрали, вы можете использовать официальные драйверы Python , JavaScript или сообщества. Например, с помощью JavaScript установите пакет с помощью npm install bigchaindb-driver

Вы можете прочитать полную документацию для драйвера здесь и базу данных здесь , но пример ниже создает ресурс статьи для authorassignee

 const driver = require('bigchaindb-driver')
const author = new driver.Ed25519Keypair()
const assignee = new driver.Ed25519Keypair()

console.log('Author: ', author.publicKey)
console.log('Assignee: ', assignee.publicKey)

const assetdata = {
    'article': {
        'title': 'Blockchain DBs',
        'body': 'Article body',
    }
}

const txCreateAuthorSimple = driver.Transaction.makeCreateTransaction(
    assetdata,
    [driver.Transaction.makeOutput(
        driver.Transaction.makeEd25519Condition(author.publicKey))
    ],
    author.publicKey
)

const txCreateAuthorSimpleSigned = driver.Transaction.signTransaction(txCreateAuthorSimple, author.privateKey)

let conn = new driver.Connection('https://test.bigchaindb.com/api/v1/', {
    app_id: '<APP_ID>',
    app_key: '<APP_KEY>'
})

conn.postTransactionCommit(txCreateAuthorSimpleSigned)
    .then(retrievedTx => console.log('Transaction', retrievedTx.id, 'successfully posted.'))

    .then(() => {
        const txTransferAssignee = driver.Transaction.makeTransferTransaction(
            [{tx: txCreateAuthorSimpleSigned, output_index: 0}],
            [driver.Transaction.makeOutput(driver.Transaction.makeEd25519Condition(assignee.publicKey))],
            {price: '100 dollars'}
        )

        let txTransferAssigneeSigned = driver.Transaction.signTransaction(txTransferAssignee, author.privateKey)
        console.log('Posting signed transaction: ', txTransferAssigneeSigned)

        return conn.postTransactionCommit(txTransferAssigneeSigned)
    })
    .then(res => {
        console.log('Response from BDB server:', res)
        return res.id
    })
    .then(tx => {
        console.log('Is Assignee the owner?', tx['outputs'][0]['public_keys'][0] == assignee.publicKey)
        console.log('Was Author the previous owner?', tx['inputs'][0]['owners_before'][0] == author.publicKey)
    })
    // Search for asset based on the serial number of the bicycle
    .then(() => conn.searchAssets('Blockchain DBs'))
    .then(assets => console.log('Found assets with title:', assets))

Другие альтернативы

BigchainDB больше не является единственной базирующейся в городе базой данных на основе цепочки блоков, в зависимости от вашего определения и того, чего вы хотите достичь.

FlureeDB оборачивает базу данных в графическом стиле слоем блокчейна, который — когда вы рассматриваете природу блокчейна — имеет некоторый смысл. Благодаря поддержке Graph он хорошо интегрируется с GraphQL и React. Он все еще находится в активной разработке и следует привычным моделям финансирования для баз данных с ограниченной версией для сообщества, а также дополнительными возможностями, безопасностью и поддержкой для премиум-пользователей. Участие FlureeDB в технологии Blockchain, похоже, использует токены в качестве замены денег и некоторой формы механизма консенсуса. Проект не с открытым исходным кодом, поэтому сложно сказать, что у него под капотом.

Из памяти OrbitDB существует примерно столько же, сколько BigchainDB, но она разработана для более простых приложений. Хотя он использует IPFS для хранения (что некоторые могут претендовать на роль базы данных), он не претендует на звание «базы данных блокчейна», а скорее на выбор для децентрализованных приложений.

TiesDB предъявляет множество смелых претензий на своем сайте, но с небольшими подробностями о том, как он их выполняет, и с редким репозиторием и более разреженной документацией о том, как запустить базу данных, трудно подтвердить, если она будет выполнена. В файле readme из репозитория есть несколько статей, которые вы можете просмотреть, но они по-прежнему в основном охватывают теорию, а не практику. Интересно, что он также позволяет удалять данные, что, хотя и является фундаментальной частью традиционных баз данных, несколько противоречит идеалам блокчейна. Там нет ничего плохого или правильного в этом решении; некоторым разработчикам приходится искать компромиссы для продвижения технологий блокчейна в мейнстрим.

Swarm — это компонент Ethereum, который является механизмом хранения по умолчанию для распределенных приложений ( Dapps ). Он не предлагает такой простой способ начать работу, но если вы уже исследуете Ethereum для других его компонентов, то прочитайте документацию для получения более подробной информации .

Filecoin делает что-то другое. Он предлагает механизм для отслеживания транзакций между блоками резервного хранилища вокруг центров обработки данных и Интернета. Он позволяет вам использовать традиционное хранилище, но через слой блокчейна, который позволяет пользователям делать ставки за предложенное вами пространство и отслеживает их использование.

Обе эти технологии описаны более подробно в этом посте .

Часть децентрализованного будущего

Игнорируя свое наследие Blockchain, BigchainDB предоставляет функции, отсутствующие в современных NoSQL и распределенных базах данных. Уже один этот факт может послужить причиной для его попытки и может послужить обоснованным обоснованием для бизнеса / использования.

Для поклонников блокчейна среди вас BigchainDB и другие альтернативы также завершают головоломку для полного децентрализованного стека приложений — с Ethereum для приложений, IPFS в качестве файловой системы и BigchainDB для хранения данных. Они созданы для другого способа разработки, развертывания и поддержки приложений, что ведет к увлекательному будущему, о котором я хотел бы услышать ваше мнение.