bootstrap button


Часть 3. Построение простых блоков в блокчейн на Питон.


***


Нужно начать с чего-то блокчейн, начнём строить блоки на Питон.


Часть 3.1 - Использование json в блокчейн с Python. Въезжаем в json.

 

Оф. сайт Json:
https://www.json.org/json-ru.html

Wiki ethereum Json:
https://github.com/ethereum/wiki/wiki/JSON-RPC

Python 3 Json:
https://docs.python.org/3/library/json.html

Прочитать и посмотреть видео:

Как правильно изучать Django? Другие методики не работают.
https://spb-tut.ru/guest/pages/294/

Хотите стать программистом? Читайте.
https://spb-tut.ru/reviews/

Для тех у кого нет доступа и есть желание учится серьёзно:

Получить пожизненный доступ:
питон джанго
https://spb-tut.ru/info/action/

блокчейн + питон:
http://blockchain.spb-tut.ru/info/buy/


Домашнее задание.

набрать ключевую фразу python json (или нечто подобное)


проделать примеры из интернет, проделать примеры с оф. доков пайтон.
Свои примеры сбросить в группу (для участников ссылка на группу блокчейн)

Перечислить основной синтаксис json и пояснить примером.

Перечислить типы объектов, передоваемые json.

Пояснить, проверив себя, цель создания json.

Познакомится просто познакомится с django-rest-framework

http://www.django-rest-framework.org/

 django-rest-framework - это не просто библиотека создания json, его цель создавать полноценные api доступа для обмена json.


Найти в интернет примеры и объяснить методы Python с оф. библиотеки Python JSON:


dumps
sort_keys=True,
indent=2

найти и пояснить, ещё любой из методов.

Цель, что бы знали где искать и умели применять азы.


Справка.

В Пайтон Json встроен, для его использования доостаточно просто импортировать.

 

import json

 

 

Часть 3.3 Пишем простой блокчейн на Питон.

import hashlib, json
# урок 3
block_genesis = {
    'prev_hash': None,
    # транкзакции подразумевают криптовалюту
    'transactions': [15, 23, 7, 78, 9,],
    'messages':('валерий отправил 15 btn',),
}

block_genesis_serialized = json.dumps(block_genesis, sort_keys=True, indent=2).encode('utf-8')
block_genesis_hash = hashlib.sha256(block_genesis_serialized).hexdigest()
#print('block_genesis_serialized-', block_genesis_serialized)
#print('block_genesis_hash-', block_genesis_hash)

# End урок 3

 

 

Часть 3.4 Пишем простой блокчейн на Питон.

# урок 4

block_2 = {
    'prev_hash': None,
    # транкзакции подразумевают криптовалюту
    'transactions': [155, 237, 7, 788, 9,],
    'messages':('валерий отправил 788 btn',),
}

block_2_serialized = json.dumps(block_2, sort_keys=True, indent=2).encode('utf-8')
block_2_hash = hashlib.sha256(block_2_serialized).hexdigest()
# End урок 4

 

 

Часть 3.5 Пишем простой блокчейн на Питон.

 

# урок 5
block_3 = {
    'prev_hash': None,
    # транкзакции подразумевают криптовалюту
    'transactions': [1555, 2387, 7, 7888, 9,],
    'messages':('валерий отправил 7888 btn',),
}


block_3_serialized = json.dumps(block_3, sort_keys=True, indent=2).encode('utf-8')
block_3_hash = hashlib.sha256(block_3_serialized).hexdigest()

# End урок 5

 

Часть 3.6 Проверка целостности цепи блокчейн.

 

# урок 6

def hash_blocks(blocks):
    prev_hash = None
    for block in blocks:
        block['prev_hash'] = prev_hash
        block_serialized = json.dumps(block, sort_keys=True, indent=4).encode('utf-8')
        block_hash = hashlib.sha256(block_serialized).hexdigest()
        prev_hash = block_hash

    return  prev_hash


# End урок 6

 

Часть 3.7 Выводим оригинальный хеш цепи блокчейн.

# урок 7

print('Оригинальный хеш')
print(hash_blocks([block_genesis, block_2, block_3]))
#print('введим методы')
#print(hash_blocks.__dict__)
#print(type(hash_blocks))


# End урок 7

 

Часть 3.8 Имитируем вмешательство хакера извне нашей цепи блокчейн.

# урок 8
print('Вмешательство извне')
block_3['transactions'][1] = 23875
print(hash_blocks([block_genesis, block_2, block_3]))



# End урок 8





Пришли к пониманию, что нам нужно следующее:

"""
смарт контракт
Как вы решите, как следующий блок будет добавлен?
В блокчейн это реализуется, при помощи 
согласия
 и 
подтверждения работы. (смотреть видео основы блокчейн)
Тогда структура блоков в блокчейне гораздо сложнее. 


"""


 

Домашнее задание.

Сначала коротко подведём итог:

Закончена серия видео уроков для новичков по блокчейн.
Где мы создаём простые блоки, при этом ранее мы учились работать с json и шифровать
при помощи библиотеки hashlib python, поэтому готовим данные к передаче в формате
json и шифруем.
Потом пишем функцию проверки нашего блокчейн и выводим оригинальный хеш.
Далее имитируем вмешательство хакера извне с попыткой изменить данные и видим результат
Приходим к пониманию зачем нам нужен смарт контракт и какие ещё элементы нужны нам для
нормальной стабильной работы сети.
Далее получаем домашнее задание, кстати домашнее задание для просто гостей это дело ваше, а вот
для участников школы выполнить рекомендуется в обязательном порядке.
Ребята любую возможность используйте, что бы подтянуть код.
Суть домашнего задания переписать наш код в видео функций и вторая часть в виде класса.
Ну а для новичков, должно отложится, что всё делается людьми и во всем можно разобраться.
Приглашаю вас заниматься в школу (ссылки ниже), все получится.
Спасибо за доверие.

 

Само домашнее задание.

Для участников школы домашнее задание разместить в группе по ссылке.

Домашнее задание:
1. Переписать блоки
block_genesis, block_2, block_3 в функции
в функцию включить сериализацию и хеш.


2. Переписать в класс.

block_genesis, block_2, block_3 должны быть методами, можете написать несколько классов, 
как вам легче так и делайте.

 

Дополнение к дз:

 
Когда будете работать с классом, то учтите инкапсуляцию, как раз есть домашние задания.
То есть старайтесь сделать все методы закрытые.
 
Ссылка с группы джанго. (для участников spb)
 
https://groups.google.com/d/msg/spb-tut/TAUbgF321NY/tPUEHFSlAQAJ


на выходе показать то же что и мы
Оригинальный хеш
977c46bc20f5c5064e25a8e8e073f9e76a26003024864e5ca6c59724a6292359
Вмешательство извне
c03c0408732a42a84ef68dbbc5a5b8efad2273b01e8d820396dbb1adf217f3e3

 

Домашнее задание сбросить сюда.
вариант 1 запаковать проект в .zip и прикрепить.
вариант 2 разместить на git
вариант 3. Просто сбросить код в группу. 

///////////////////////////////////////////

А вот, как выполнил домашнее задание Сергей Осадчий, участник школы:

 

Для участников школы, ссылки на код в группе:

- функции дом. задание.

- классы дом. задание.

 

 




Валерий Бовсуновский

УНП 391609112
Полоцк, Беларусь.
(обратите внимание у нас онлайн обучение)

Контакты

Email: Страница контактов 


Школа программирования Бовсуновского