Блокчейн технологии: основы и применение
Блокчейн - это распределенная база данных, в которой транзакции между участниками сети записываются в блоки, которые связаны между собой защищенными хэшами. Эта технология позволяет создавать децентрализованные приложения, которые не требуют участия посредников.
Одним из самых популярных приложений блокчейн является криптовалюта Bitcoin. Для работы с Bitcoin-транзакциями используется особый язык программирования Script (также называемый Bitcoin Script), который управляет переводом денег с одного кошелька на другой.
Пример работы с Bitcoin Script:
1. Создаем входную транзакцию, указывая адрес отправителя, получателя и количество денег:
python
input_tx = {
'address': 'sender_address',
'amount': 10,
'output_index': 0
}
output_tx = {
'address': 'recipient_address',
'amount': 10
}
2. Генерируем хэш транзакции и подписываем его приватным ключом отправителя:
python
tx_hash = hashlib.sha256(str(input_tx) + str(output_tx)).hexdigest()
signature = sign(tx_hash, privkey)
3. Формируем транзакцию с подписью и хэшем публичного ключа отправителя:
python
transaction = {
'input_tx': input_tx,
'output_tx': output_tx,
'signature': signature,
'pubkey': pubkey
}
4. Транзакция отправляется в сеть и будет выполнена при достижении нужной глубины блоков.
Кроме транзакций, блокчейн может использоваться и для хранения других данных, например, информации о правах на недвижимость или медицинской истории пациента.
Пример работы с Ethereum и смарт-контрактами:
1. Создаем смарт-контракт на Solidity, языке программирования Ethereum:
solidity
pragma solidity ^0.4.0;
contract Token {
mapping(address => uint) public balances;
function transfer(address _to, uint _value) public {
require(balances[msg.sender] >= _value);
balances[msg.sender] -= _value;
balances[_to] += _value;
}
}
2. Компилируем контракт, развертываем его на сети Ethereum и получаем адрес контракта:
python
contract_source = open('Token.sol', 'r').read()
compiled_contract = compile_source(contract_source)
contract_interface = compiled_contract[':Token']
deployed_contract = w3.eth.contract(abi=contract_interface['abi'], bytecode=contract_interface['bin'])
tx_hash = deployed_contract.constructor().transact()
tx_receipt = w3.eth.waitForTransactionReceipt(tx_hash)
contract_address = tx_receipt['contractAddress']
3. Взаимодействуем с контрактом, вызывая нужные методы (например, передача токенов от одного пользователя к другому):
python
contract = w3.eth.contract(address=contract_address, abi=contract_interface['abi'])
contract.functions.transfer(to_address, value).transact({'from': from_address})
Таким образом, блокчейн-технология может использоваться для создания разнообразных децентрализованных приложений и сервисов.