Вопросы к биткойну и блокчейну
- Что если обрабатывать не только финансовый транзакции?
- Может делать что-то полезнее нагревание воздуха?
1. Proof of Stake
- дешевая альтернативность
- захват альтернативной историей
- double spend
- богатые богаче, а бедные беднее
2. Ethereum
платформа для создания децентрализованных онлайн-сервисов на базе блокчейна
(Đapps, Decentralized applications, децентрализованных приложений),
работающих на базе умных контрактов
Плюсы
- обмениваться деньгами, собственностью, акциями
- информация об обязательствах сторон и штрафах
- автоматически обеспечивают выполнение условий
Эфириум
=
база данных (где код это тоже данные)
Умный контракт
=
хранимая процедура
HOWTO
- пишете код
- кладете в блокчейн
- код выполняется на нодах как DApp
- PROFIT
PRO
- распределенная база данных
- транзакционность
- A атомарность
- C согласованность
- I изолированность
- D долговечность
- типы
CONTRA
- свой язык хранимых процедур
- код хранится в базе(?!)
- медленная
- платная
Solidity
- виртуальная машина, байткод
- JS-like, асинхронный
- типизирован
Error: Type struct Ballot.Voter storage ref
is not implicitly convertible to expected type uint256.
- интересная debug-story
- асинхронные стектрейсы
console.log
- public debugger
You have no power here
- нельзя просто так положить что-то в блокчейн
- иммутабельный код
- по умолчанию автор не имеет привелегий
Pay
- за транзакцию
- байторазмер
- чтение
- запись(*5)
NO
- выйти наружу (network connect)
- краудфайндинг
- скрыть информацию
External connect
var Web3 = require('web3');
var provider = new Web3.providers.HttpProvider("http://localhost:8545");
var web3 = new Web3(provider);
var MyContract = web3.eth.contract(abiArray);
var contractInstance = MyContract.at(address);
// auto call/sendTransaction
var result = myContractInstance.myConstantMethod('myParam');
Events
var events = contractInstance.allEvents();
events.watch((error, event) => {
if (!error) console.log('Event', event);
});