Blockj: простой блокчейн-проект, основанный на Java.
Редактор Downcodes сегодня предлагает вам простой проект блокчейна (цепочки консорциума), основанный на Java — Blockj. Он включает в себя инструменты шифрования, кошельки, P2P-передачу, синхронизацию блоков, сетевой консенсус и другие базовые реализации блокчейна. Это очень подходящий проект для начинающих изучать технологию блокчейна.
Структура проекта
Blockj реализован с использованием сетевой инфраструктуры SpringBoot + Tio. Его основная структура выглядит следующим образом:
1. Основная программа: реализована с использованием платформы SpringBoot.
2. Передача P2P: реализована с использованием сетевой структуры t-io.
Операционная среда
Для правильной работы проекта Blockj требуется JDK 1.8 или выше.
модуль проекта
Проект Blockj в основном содержит следующие три модуля:
1. Blockj-base: базовый общедоступный набор инструментов, включающий инструменты шифрования, блоки, сообщения и другие модели данных, а также хранилище данных и другие функции.
2. Blockj-miner: основная программа Blockchain, включая майнеры, синхронизацию блоков, сеть P2P, API RPC и другие функции.
3. Blockj-client: клиентский инструмент командной строки, в основном используемый для вызова связанных API-интерфейсов Miner для реализации взаимодействия пользователя с блокчейном.
быстрый старт
Следующие шаги научат вас, как создать сеть блокчейнов и выполнить основные операции:
1. Создать узел генезиса (создать сеть)
Сначала вам нужно клонировать проект, скомпилировать и упаковать его:
`бить
клон git https://gitee.com/blackfox/blockj.git
компакт-диск блокдж
чистый пакет mvn
`
Затем создайте узел генезиса:
`бить
./miner Genesis --repo=/data/genesis --enable-mining=true
`
2. Запустите Genesis Miner.
`бить
./miner run --repo=/data/genesis
`
3. Запустить новую ноду (присоединиться к сети)
Чтобы новые узлы могли присоединиться к существующей сети, вам необходимо инициализировать Miner с помощью генезис-блока, а затем запустить Miner:
`бить
./miner init --repo=/data/miner1 --genesis=genesis.car --api.port=8002 --p2p.port=3456
./miner run --repo=/data/miner1
`
Использование клиента
Ниже приведены некоторые часто используемые операции командной строки клиента:
1. Посмотреть список кошельков
`бить
./список клиентских кошельков
`
Выход:
`
Баланс адреса Nonce
0x0d181310331612e107b5e0dfdf971cfb9de780adfds 800 10
0x2505bf54f3a63848e44a105e8de599ad08ae8c58 2400 0
0xb6258bc70240ee5daa213f671c08db51e50a4cbe 50800 30
cd3da3ec4195070e13a6d88b75101f6ceb427a8e 0 0
`
2. Создайте новый кошелек
Создайте обычный кошелек:
`бить
./клиентский кошелек новый
`
Создайте кошелек с мнемонической фразой (можно установить пароль и сгенерировать файл хранилища ключей):
`бить
./клиентский кошелек новый --mnemonic=true 123456
`
3. Проверьте баланс кошелька
`бить
./баланс кошелька клиента 0x2505bf54f3a63848e44a105e8de599ad08ae8c58
`
Выход:
`
Адрес Баланс
0x2505bf54f3a63848e44a105e8de599ad08ae8c58 2400
`
4. Трансфер
`бить
./client цепочка send --from=0x0d181310331612e107b5e0dfdf971cfb9de780adfds 0x2505bf54f3a63848e44a105e8de599ad08ae8c58 123
`
Выход:
`
Отправить сообщение, CID: 05b6074241f1406cd1a68731d74cf612f55981692a3f4e5d9da01b13b4ee3631
`
5. Проверьте текущую высоту цепи.
`бить
./голова цепочки клиентов
`
6. Просмотр сообщений по указанной цепочке
`бить
./цепочка клиентов getMessage 05b6074241f1406cd1a68731d74cf612f55981692a3f4e5d9da01b13b4ee3631
`
Выход:
`
Сообщение {версия = 1, from = '0x0d181310331612e107b5e0dfdf971cfb9de780adfds', to = '0x2505bf54f3a63848e44a105e8de599ad08ae8c58', значение = 123, временная метка = 167282674364 0, ключ публикации = 'PZ8Tyr4Nx8MHsRAGMpZmZ6TWY63dXWSCw5EXe33S25zZDT25sNYu1bjtBfaCwEGSgnGhJiE31fCfDsyE3pNFw7cC87VfQZQqiEdntMmztfpiDcRe1gv3aJJ4', cid='05b60 74241f14 06cd1a68731d74cf612f55981692a3f4e5d9da01b13b4ee3631', status=ДОБАВЛЕНИЕ, nonce=2, параметры= 'ноль', высота = 0, знак = '30460221009A8B2750A6D986EB926B67163B740BBACDD07FE2D87F8FA9AE2F08424989477602210082C1C36EAEEC6367C023847F995291873F305B86 7 E9B65A5C68ED8A4293DB890'}
`
7. Просмотр информации о блоке на указанной высоте.
`бить
./клиентская цепочка getBlock 1
`
Выход:
`
Блок{заголовок=BlockHeader{высота=1, сложность=28269553036454149273332760011886696253239742350009903329945699220681916416, nonce=703, createTime=1672813674, hash='0004c 262f7ead28cc66c9336d7a8335cb8fea5a06b0b1fd7488c3c9b140987cc', previousHash='ed5126ddd65f39a17739b8e26ea3edecfff6bf196148dc259d9a3eddeefc23d5'} messages=[ Сообщение {версия=0, от='B099' , to='0xb6258bc70240ee5daa213f671c08db51e50a4cbe', значение=50, метка времени=1672813674163, pubKey='PZ8Tyr4Nx8MHsRAGMpZmZ6TWY63dXWSD1ErKp8AqSj4Ph9Jsj2Gvk 7w1pyLg qDRiguC7JvjeGZJZ1si1qRYCAsVmu1UvYRqvhiCBgYDpmyuWK5VzD5KK4RNY', cid='3e1f8987b0d66b2de155e78aeef6984ab7cb6c3acdf03c835c01f4b4088fb90d', CCESS, nonce=0, params='Награда майнеру.', height=1, знак= '304402202DF6EABBF5C81C41996C44F8E1230D44CAE8ADA9184B466D9B708ADC8B050225022049D74E4E99E0EA8E56208AD2E4B7B17C2320 DC3E6461A17C94D1820 818559CA9 '}], блокSign='3046022100C04714C00642527AF6AA1DB2B537E5FD887F52999F66929AA2A928D4C6A4897A022100AF98888FDC825FFB0683E8D65494363790E5 173F 3991AF61AB86DEEFEAF15D81'}
`
8. Просмотрите список P2P-узлов в текущей сети.
`бить
./клиентские сетевые узлы
`
9. Просмотр информации о P2P-соединении текущего узла.
`бить
./клиентская сеть прослушивания
`
Выход:
`
Информация о P2P-соединении, используемая для подключения других узлов.
127.0.0.1:2345
`
10. Подключите узел вручную
`бить
./клиентское подключение к сети 192.22.33.11:3456
`
краткое содержание
Проект Blockj — это проект начального уровня для изучения технологии блокчейн. Благодаря ему вы сможете изучить основные концепции и методы реализации блокчейна. Конечно, в настоящее время он реализует только алгоритм консенсуса POW. Если вы хотите использовать его в производственных проектах, вам необходимо изменить и улучшить его в соответствии с потребностями вашего проекта.
Надеюсь, эта статья окажется для вас полезной.