Как я могу хранить данные в блокчейне Эфириума

Я хочу хранить хэш PDF в блокчейне. Я уже читал этот пост . Какие способы хранения данных предлагаются в Ethereum? Но я новичок в этой области и не понимаю... Можно ли хранить данные (в моем случае хеш) в Ethereum?

Сколько стоит хранить данные в Ethereum? И как я могу сделать это с помощью python или другого языка?

Ответы (5)

Вы можете хранить данные в блокчейне:

  1. В специальном месте в блокчейне, отведенном для данных контракта.
  2. В специальном месте в блокчейне, отведенном для входных данных транзакции.

Чтобы хранить ваши данные в специальном месте 1 , вам нужно создать контракт и развернуть его в блокчейне.

Чтобы хранить ваши данные в специальном месте 2 , вам нужно отправить кому-то транзакцию и включить в нее свои данные.

Прежде чем вы сможете взаимодействовать с блокчейном, вам необходимо получить доступ к объекту web3 . Есть несколько способов сделать это. Я предлагаю вам установить плагин MetaMask для браузера Chrome. После его установки у вас будет доступ к объекту web3 . Способы взаимодействия с объектом web3 можно найти здесь (документация web3 api)

Теперь, когда вы установили плагин MetaMask. В конфигах выбираем Morden testnet. Теперь вы можете использовать браузерный компилятор Solidity . Попробуйте скомпилировать и развернуть там простой контракт:

contract A {
    uint x = 255;
}

Вам понадобится немного эфира в вашей учетной записи (учетная запись, предоставленная MetaMask) для развертывания контрактов. Перейдите на https://morden.ether.camp/ и получите 5 тестовых эфиров бесплатно.

А после установки web3 могу ли я хранить данные в специальном месте 1?
@wxcvbn, я обновил свой ответ, проверьте его, не стесняйтесь спрашивать
Большое спасибо за ваш ответ! Могу ли я вставить несколько хешей в один контракт? Или можно открыть существующий контракт и добавить хэш? Мне нужно немного эфира для каждого созданного контракта или для каждой вставки данных в контракт?
@wxcvbn, вы можете вставить столько хэшей в хранилище контрактов, сколько захотите. Чем больше данных должен содержать ваш контракт, тем больше вы заплатите за его создание. Если вы хотите открыть контракт и вызвать в нем функцию, вы можете платить или не платить эфир. Если эта функция изменяет что-либо в блокчейне, например, сохраняет какое-то значение, предоставленное вами, то вы платите эфир. Итак, да, вы платите за каждую вставку данных. Чтобы открыть существующий контракт, вам нужно знать его адрес и **abi** (это как описание кода внутри контракта).
Так что мне просто нужно создать учетную запись MetaMask и добавить эфир? Я немного растерялся, что мне делать в первую очередь? скачать Эфириум? Или МетаМаск?
@wxcvbn, прелесть плагина для браузера Chrome MetaMask в том, что вам не нужно загружать весь блокчейн Ethereum, чтобы взаимодействовать с сетью. О, глупый я, я должен был дать вам другую точку для начала. У вас установлен кошелек Mist? Если вы это сделаете, вы сможете скомпилировать/развернуть контракты и отправлять транзакции оттуда, но вам нужно будет загрузить весь блокчейн, это может занять некоторое время.
Знаете ли вы другой способ сделать это с помощью python или php (или другого языка...)?
@wxcvbn, не знаю, извини.
Не волнуйся, все в порядке =)
библиотека web3 доступна на нескольких языках, для Python используйте это: github.com/ethereum/web3.py

Вы можете хранить данные в поле ввода данных транзакции.

В этом ответе я описываю, сколько данных может храниться во входных данных транзакции.

На момент написания это примерно 98 225 ненулевых байт данных. Это стоит от 1,05 до 12,66 долларов в зависимости от установленной вами цены на газ.

В этом посте рассказывается, как это хранилище данных использовалось, чтобы пользователи могли хранить изображения в блокчейне. Примечание - НФВ.

Всем привет. Я пробовал что-то подобное с Metamask. См . ethereum.stackexchange.com/questions/127889/… . Но, видимо, это не работает с Metamask, и мне нужно было бы создать специальный смарт-контракт именно для этого. Вы подтверждаете, что я не могу сделать это с чем-то вроде Metamask?

Я бы не рекомендовал хранить данные в Ethereum, если они чувствительны по своей природе, потому что любой может легко получить доступ к данным в транзакциях Ethereum. Вы можете найти больше об этом здесь . Любые конфиденциальные данные должны храниться вне сети или тщательно зашифровываться на основе SWC-136 .

Вы также можете проверить пакет EthAir Balloons npm, который представляет собой библиотеку JS, предлагающую уровень абстракции модели выше смарт-контрактов, что позволяет вам сохранять данные в сети ethereum без написания смарт-контракта Solidity.

Просто используйте 160-битный / 40-значный хэш (например, RIPEMD-160) вашего pdf-файла и используйте его в качестве целевого адреса простой транзакции с почти 0 Eth. Это доказательство того, что в данный момент вы владеете этим файлом.

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