Умные контракты

Anonymous

anon

email

company name

Вопросы к биткойну и блокчейну

  • Что если обрабатывать не только финансовый транзакции?
  • Может делать что-то полезнее нагревание воздуха?

1. Proof of Stake

  • дешевая альтернативность
  • захват альтернативной историей
  • double spend
  • богатые богаче, а бедные беднее

2. Ethereum

logo

платформа для создания децентрализованных онлайн-сервисов на базе блокчейна (Đapps, Decentralized applications, децентрализованных приложений), работающих на базе умных контрактов

Плюсы

  • обмениваться деньгами, собственностью, акциями
  • информация об обязательствах сторон и штрафах
  • автоматически обеспечивают выполнение условий
hammertime
wat

Безумные контракты

Vlad Bokov

razum2um

razum2um.me

Lunatic.cat

!

Эфириум

=

база данных (где код это тоже данные)

Умный контракт

=

хранимая процедура

HOWTO

  • пишете код
  • кладете в блокчейн
  • put
  • код выполняется на нодах как 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

  • нельзя просто так положить что-то в блокчейн
  • иммутабельный код
  • по умолчанию автор не имеет привелегий

You have power in chain

Remote code execution

?

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);
});
          
          

Контакты

@razum2um

vlad@razum2um.me