Datacoin blockchain началось около двух месяцев назад. Спасибо всем вам поддержку Datacoin. Она существует из-за вашу поддержку.
Теперь мы можем приступить к разработке blockchain на основе веб-приложений. Обратите внимание, что эта функция не касается источников Datacoin демона или кварт-кошелька: если вы не заинтересованы в этом оно еще можно использовать Datacoins и без понимания этого поста. Blockchain на основе веб-приложения требуют HTTP-сервера, который перенаправляет HTTP запросы от браузера к демону. Это осуществляется теперь с Perl (dtc_http_server.pl). Да, я знаю, что я должен был бы сделать это с помощью C ++. Я буду переписывать его позже.
Почему веб-приложения внутри blockchain хороши?
1. они защищены от удаления или цензуры
2. они работают на местном уровне и не требуют живого подключения к Интернету
3. Веб-интерфейс удобен для пользователей
4. никаких новых технологий не требуется для: HTTP Развитию, AJAX и JSON RPC просто связаны друг с другом
Datacoin сервер HTTP очень прост и предназначен для работы на локальном компьютере конечного пользователя.
Типы запросов, поддерживаемые локальный сервер HTTP Datacoin
NB: СЕТЬ может быть 'DTC' или 'DTC-testnet'
1. Получить данные blockchain
HTTP: // локальный: PORT / NET / прибудет / TXHASH -> данные ТХ с TXHASH будут отправлены обратно (предполагается, данные в формате Envelope - см envelope.proto файл)
Пример:
HTTP: // локальный: 8080 / DTC / Get / 40a3eb9624528008a87d9119dbed4041d45c9f6483ecd52a7b24f9c8b4fdf548
2. Вызвать метод демона
HTTP: // локальный: PORT / NET / RPC / МЕТОД (/ ARGS) -> JSON-RPC вызова метода демона будет выполнена, и в результате будет JSON отправляется обратно в браузер
Несколько аргументов возможны в виде arg1 / arg2 / arg3 / ...
Пример:
HTTP: // локальный: 8080 / DTC / RPC / getblockhash / 1000
Код:
{
"результат" : "ce3ca3728ee050bf14d8f9a059f13c0062ca303cf2c982796c7dec2ce10f13c6",
"ошибка" : ноль,
"Я бы" : ноль
}
NB: благодаря только из соображений безопасности 'получить данные', 'Getmininginfo', 'Getblock', 'Getblockhash' а также 'Getrawtransaction' Теперь поддерживаются. Позже будут добавлены все методы чтения. 'Sendtoaddress' и другие методы денежных расходов, вероятно, будут добавлены также, но некоторые вопросы безопасности должны быть рассмотрены до того, чтобы защитить пользователей от кражи.
3. Вызвать метод HTTP локального сервера
HTTP: // локальный: PORT / NET / lsrpc / МЕТОД (/ ARGS) -> HTTP-сервер будет обрабатывать сам этот метод (или перевести на несколько запросов к демону).
Существует только один пример методов lsrpc сейчас: 'Getenvelope'. Он разбирает tx.data поле данной транзакции, как конверт конверт и возвращается в формате JSON (без данных «»). Этот метод необходим, чтобы получить метаданные легко.
Пример:
HTTP: // локальный: 8080 / DTC / lsrpc / getenvelope / 40a3eb9624528008a87d9119dbed4041d45c9f6483ecd52a7b24f9c8b4fdf548
Код:
{
"результат":
{
"Имя файла":"blockexplorer.html",
"Тип содержимого":"текст / html",
"компрессия":"1",
"PublicKey" : "MIGJA ... много base64 букв ... AE =",
}
}
демонстрация
Для того, чтобы продемонстрировать это в действии, я послал заявку «Block Explorer» в сделке 40a3eb9624528008a87d9119dbed4041d45c9f6483ecd52a7b24f9c8b4fdf548. Вот инструкция о том, как получить к нему доступ с вашего компьютера с локальным сервером HTTP (на самом деле это будет слишком сложно для 99% пользователей, мне нужно переписать сервер с помощью C ++ и доставить его в качестве скомпилированного двоичного файла):
Прежде чем ты начнешь: НЕ делать это на машине с большим количеством монет !!! Настройка другой учетной записи пользователя на Windows (или Linux) или виртуальную машину. Существует множество возможных ошибок в этом коде, который может привести к потере денег.
Теперь вы предупреждены. Давай продолжим.
1. Резервное копирование Yout wallet.dat и защитить его паролем
2. мерзавец клон https://github.com/foo1inge/datacoin-browser.git
3. Установите все необходимые CPAN модули (способ сделать это зависит от вашего дистрибутива Perl, Perl спросите гуру, если вы не знаете, как это сделать). Вот список модулей:
Код:
HTTP :: Server :: Simple :: CGI
Google :: ProtocolBuffers
MIME :: Base64
IO :: Компресс :: Bzip2
IO :: Распаковка :: bunzip2
Crypt :: OpenSSL :: RSA
JSON RPC :: :: Client
File :: HomeDir
Data :: Dumper
4. начать Datacoin демон ('получить данные' Метод RPC требуется. Это было совершено две недели назад и, возможно, вы должны обновить демон).
5. CD datacoin-браузер / Perl /
6. Perl dtc_http_server.pl --http-порт = 8080
Это позволит запустить локальный сервер HTTP на порт 8080. Для того чтобы увидеть Datacoin testnet добавить "--testnet = 1" вариант - это будет подключаться к демонам, работающим в testnet.
7. перейти к HTTP: // локальный: 8080 / DTC / Get / 40a3eb9624528008a87d9119dbed4041d45c9f6483ecd52a7b24f9c8b4fdf548
8. наслаждаться
Вы можете развернуть это на любой машине. Вот это приложение, развернутое на Amazon EC2 (микро экземпляр, очень медленно):
http://ec2-54-201-144-165.us-west-2.compute.amazonaws.com/dtc/get/40a3eb9624528008a87d9119dbed4041d45c9f6483ecd52a7b24f9c8b4fdf548
Приложение Blockexplorer состоит из трех операций:
40a3eb9624528008a87d9119dbed4041d45c9f6483ecd52a7b24f9c8b4fdf548 - blockexplorer.html
465ca75b6dedf70bc85db24548ee99bab776028f9295116afba4fa1e4838ff5f - blockexplorer.js
73b7c7165a51f604040e17681705a39145392691a0447266b9074a2ad9140327 - datacoin-logo.png
Все эти файлы доступны на TXID (не по именам!) Следующим образом (фрагменты из blockexplorer.html):
Код:
<скрипт
SRC ="/ DTC / прибудет / 465ca75b6dedf70bc85db24548ee99bab776028f9295116afba4fa1e4838ff5f"
тип ="текст / JavaScript"
кодирование ="UTF-8,">
скрипт>
Код:
<стиль тд ="обивка-направо: 6px">
SRC ="73b7c7165a51f604040e17681705a39145392691a0447266b9074a2ad9140327"
альт ="Datacoin логотип"/>
тд>
Blockexplorer делает следующие шаги при запуске:
1. получить данные RPC вызов (чтобы получить текущую высоту)
2. getblockhash / getblock для каждого блока в цикле
3. getrawtransaction для каждой сделки
4. getenvelope для каждой операции с данными
Все эти вызовы кодируются как обычный AJAX в blockexplorer.html.
Важные вопросы для веб-разработчиков о том, как разрабатывать приложения для Datacoin
1. Развитие Начало в testnet
Testnet блок исследователь: http://ec2-54-201-144-165.us-west-2.compute.amazonaws.com:81/dtc-testnet/get/7fead7473c448b2d69d0e62354dedd59895a1ab099c1835155d83f7327c5156a
2. Никогда не используйте конкретный IP или порт в URL, - только относительные URL-адреса являются значимыми (пользователь может запустить локальный сервер HTTP на любой IP: PORT).
В вашем HTML код вместо делать
Код:
использовать относительный URL:
Код:
3. Использование "--Тип содержимого" аргумент dtc_put_file.pl Скрипт для установки "Тип содержимого" атрибут HTTP для ваших файлов.
Вот пример:
Код:
Perl dtc_put_file.pl --content типа ="текст / html" blockexplorer.html
4. Использование "--add_key" аргумент dtc_put_file.pl сценарий и сохранить секретный ключ (он будет напечатан на экране) в безопасном месте, чтобы upate приложения позже.
Вот полный пример:
Код:
Perl dtc_put_file.pl --add_key = истинный --content типа ="текст / html" blockexplorer.html
NB: функция обновления не реализована пока я работаю над этим сейчас.
Datacoin планы развития в отношении blockchain на основе веб-приложений:
(Я не упоминаю здесь вопросы, не относящиеся к теме)
1. исправление ошибок
2. Функция обновления (см подробного описания сценария обновления в envelope.proto файл)
3. Большие файлы (более 128Кб) функция
4. C ++ версии локального сервера HTTP
5. "SendData" с локального сервера HTTP
6. Доступ к сети P2P совместного использования файлов с локального сервера HTTP (что-то вроде локального хоста: 8080 / Kademlia / HASH). Требуется некоторое расследование.