Исследовательская работа «Блокчейн – технология, которая меняет мир» • Наука и образование ONLINE

Исследовательская работа «Блокчейн – технология, которая меняет мир» • Наука и образование ONLINE Реферат

Что такое распределённый реестр

Параллельно с попытками Бутерина использовать технологию для создания компьютера, охватывающего весь мир, развивалась идея закрытой и контролируемой версии блокчейна. В сентябре 2021 года группа финансовых институтов, в том числе Barclays, Goldman Sachs и JP Morgan сформировала консорциум под названием R3 для изучения того, как блокировки могут повысить эффективность расчётов между банками.

Открытая структура блокчейнов, таких как биткоин и Ethereum, противоречит потребностям этих организаций. В первую очередь вызывает вопросы анонимность пользователей, данные которых представлены буквенно-цифровыми общедоступными адресами, без указаний их реальной идентичности.

Финансовые учреждения также юридически обязаны защищать данные о клиентах и ​​контролировать их экспорт по национальным или региональным линиям. Учитывая, что публичные блокчейны содержат всю информацию о транзакциях на многих компьютерах в сети, невозможно ограничить цепочку хранения при их использовании.

Таким образом, появился подход распределённого реестра к технологии блокчейн. В распределённом реестре известна идентификация людей, добавляющих блоки, а данные в системе доступны только для избранных сторон. Поскольку право создавать новые блоки назначается людьми, которые запускают код, а не лотереей, нет необходимости проверки работы майнеров.

Такая система предназначена для ситуаций, когда все участники блочной цепи уже имеют небольшую степень доверия, но хотят выполнить услуги для нейтральной третьей стороны, как это может быть в случае с банками при урегулировании международных банковских переводов.

В прошлом году проект R3, который недавно привлек $107 млн из более чем 40 учреждений, выпустил свой первый распределённый реестр Corda. И у него уже появился конкурент: JP Morgan, который покинул консорциум R3 прошлой весной, выпустил свой собственный реестр, получивший название Quorum.

Подход работы с распределённым реестром также распространяется в другие отрасли, которые хранят конфиденциальные данные клиентов. Многие из этих проектов построены с помощью инструментов, предоставляемых Hyperledger. Он создает продукты для компаний, которые хотят работать со смарт-контрактами, но не решаются использовать открытые блокчейны, такие как Ethereum и биткоин.

«Люди должны понимать фактические проблемы и нормативные требования, которых должны придерживаться такие организации, как банки, страховые компании и отрасли здравоохранения. Они не могут позволить себе риск и неопределенность, которые внедряются некоторыми открытыми системами», — говорит Джонатан Леви, создатель системы управления доступом к блокчейнам Hacera.

Smart contracts

В блокчейны, реализованные после Bitcoin, в той или степени добавлена возможность выполнения смарт-контрактов. По сути смарт-контракт — это транзакция, в которой помещен программный код для выполнения. Смарт-контракты в сети Ethereum выполняются в EVM (Ethereum Virtual Machine).

Для начала выполнения смарт-контракта его надо явно запустить другой транзакцией, или должно выполниться предусловия для выполнения. Результаты выполнения смарт-контракта также запишутся в блокчейн. Получение данных извне блокчейна возможно, но крайне ограничено.

Какую бизнес логику можно реализовать с помощью смарт-контракта? На самом деле не так уж много, например проверка условий по данным из блокчейна, изменение собственников цифровых активов в зависимости от этих условий, запись данных в постоянное хранилище внутри блокчейна. Реализуется логика на специальном языке высокого уровня Solidity.

Классическим примером функциональности, которую реализуют с использованием смарт-контрактов — это выпуск токенов для проведения ICO. Например, мной был реализован смарт-контракт на выпуск скромных 500 000 000 AlexToken. По ссылке в Etherscan находится

исходный код смарт-контракта на языке Solidity
pragma solidity ^0.4.23;

library SafeMath {
    /**
     * @dev Multiplies two numbers, throws on overflow.
     **/
    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
        if (a == 0) {
            return 0;
        }
        c = a * b;
        assert(c / a == b);
        return c;
    }
    
    /**
     * @dev Integer division of two numbers, truncating the quotient.
     **/
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // assert(b > 0); // Solidity automatically throws when dividing by 0
/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
        // uint256 c = a / b;
        // assert(a == b * c   a % b); // There is no case in which this doesn't hold
        return a / b;
    }
    
    /**
     * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
     **/
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }
    
    /**
     * @dev Adds two numbers, throws on overflow.
     **/
    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
        c = a   b;
        assert(c >= a);
        return c;
    }
}

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 **/
 
contract Ownable {
    address public owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev The Ownable constructor sets the original `owner` of the contract to the sender account.
     **/
   constructor() public {
      owner = msg.sender;
    }
    
    /**
     * @dev Throws if called by any account other than the owner.
     **/
    modifier onlyOwner() {
      require(msg.sender == owner);
      _;
    }
    
    /**
     * @dev Allows the current owner to transfer control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     **/
    function transferOwnership(address newOwner) public onlyOwner {
      require(newOwner != address(0));
      emit OwnershipTransferred(owner, newOwner);
      owner = newOwner;
    }
}

/**
 * @title ERC20Basic interface
 * @dev Basic ERC20 interface
 **/
contract ERC20Basic {
    function totalSupply() public view returns (uint256);
    function balanceOf(address who) public view returns (uint256);
    function transfer(address to, uint256 value) public returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
}

/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 **/
contract ERC20 is ERC20Basic {
    function allowance(address owner, address spender) public view returns (uint256);
    function transferFrom(address from, address to, uint256 value) public returns (bool);
    function approve(address spender, uint256 value) public returns (bool);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

/**
 * @title Basic token
 * @dev Basic version of StandardToken, with no allowances.
 **/
contract BasicToken is ERC20Basic {
    using SafeMath for uint256;
    mapping(address => uint256) balances;
    uint256 totalSupply_;
    
    /**
     * @dev total number of tokens in existence
     **/
    function totalSupply() public view returns (uint256) {
        return totalSupply_;
    }
    
    /**
     * @dev transfer token for a specified address
     * @param _to The address to transfer to.
     * @param _value The amount to be transferred.
     **/
    function transfer(address _to, uint256 _value) public returns (bool) {
        require(_to != address(0));
        require(_value <= balances[msg.sender]);
        
        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);
        emit Transfer(msg.sender, _to, _value);
        return true;
    }
    
    /**
     * @dev Gets the balance of the specified address.
     * @param _owner The address to query the the balance of.
     * @return An uint256 representing the amount owned by the passed address.
     **/
    function balanceOf(address _owner) public view returns (uint256) {
        return balances[_owner];
    }
}

contract StandardToken is ERC20, BasicToken {
    mapping (address => mapping (address => uint256)) internal allowed;
    /**
     * @dev Transfer tokens from one address to another
     * @param _from address The address which you want to send tokens from
     * @param _to address The address which you want to transfer to
     * @param _value uint256 the amount of tokens to be transferred
     **/
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
        require(_to != address(0));
        require(_value <= balances[_from]);
        require(_value <= allowed[_from][msg.sender]);
    
        balances[_from] = balances[_from].sub(_value);
        balances[_to] = balances[_to].add(_value);
        allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
        
        emit Transfer(_from, _to, _value);
        return true;
    }
    
    /**
     * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
     *
     * Beware that changing an allowance with this method brings the risk that someone may use both the old
     * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
     * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     * @param _spender The address which will spend the funds.
     * @param _value The amount of tokens to be spent.
     **/
    function approve(address _spender, uint256 _value) public returns (bool) {
        allowed[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }
    
    /**
     * @dev Function to check the amount of tokens that an owner allowed to a spender.
     * @param _owner address The address which owns the funds.
     * @param _spender address The address which will spend the funds.
     * @return A uint256 specifying the amount of tokens still available for the spender.
     **/
    function allowance(address _owner, address _spender) public view returns (uint256) {
        return allowed[_owner][_spender];
    }
    
    /**
     * @dev Increase the amount of tokens that an owner allowed to a spender.
     *
     * approve should be called when allowed[_spender] == 0. To increment
     * allowed value is better to use this function to avoid 2 calls (and wait until
     * the first transaction is mined)
     * From MonolithDAO Token.sol
     * @param _spender The address which will spend the funds.
     * @param _addedValue The amount of tokens to increase the allowance by.
     **/
    function increaseApproval(address _spender, uint _addedValue) public returns (bool) {
        allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }
    
    /**
     * @dev Decrease the amount of tokens that an owner allowed to a spender.
     *
     * approve should be called when allowed[_spender] == 0. To decrement
     * allowed value is better to use this function to avoid 2 calls (and wait until
     * the first transaction is mined)
     * From MonolithDAO Token.sol
     * @param _spender The address which will spend the funds.
     * @param _subtractedValue The amount of tokens to decrease the allowance by.
     **/
    function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) {
        uint oldValue = allowed[msg.sender][_spender];
        if (_subtractedValue > oldValue) {
            allowed[msg.sender][_spender] = 0;
        } else {
            allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
        }
        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }
}

/**
 * @title Configurable
 * @dev Configurable varriables of the contract
 **/
contract Configurable {
    uint256 public constant cap = 1000000000*10**18;
    uint256 public constant basePrice = 100*10**18; // tokens per 1 ether
    uint256 public tokensSold = 0;
    
    uint256 public constant tokenReserve = 500000000*10**18;
    uint256 public remainingTokens = 0;
}

/**
 * @title CrowdsaleToken 
 * @dev Contract to preform crowd sale with token
 **/
contract CrowdsaleToken is StandardToken, Configurable, Ownable {
    /**
     * @dev enum of current crowd sale state
     **/
     enum Stages {
        none,
        icoStart, 
        icoEnd
    }
    
    Stages currentStage;
    /**
     * @dev constructor of CrowdsaleToken
     **/
    constructor() public {
        currentStage = Stages.none;
        balances[owner] = balances[owner].add(tokenReserve);
        totalSupply_ = totalSupply_.add(tokenReserve);
        remainingTokens = cap;
        emit Transfer(address(this), owner, tokenReserve);
    }
    
    /**
     * @dev fallback function to send ether to for Crowd sale
     **/
    function () public payable {
        require(currentStage == Stages.icoStart);
        require(msg.value > 0);
        require(remainingTokens > 0);
        
        uint256 weiAmount = msg.value; // Calculate tokens to sell
        uint256 tokens = weiAmount.mul(basePrice).div(1 ether);
        uint256 returnWei = 0;
        
        if(tokensSold.add(tokens) > cap){
            uint256 newTokens = cap.sub(tokensSold);
            uint256 newWei = newTokens.div(basePrice).mul(1 ether);
            returnWei = weiAmount.sub(newWei);
            weiAmount = newWei;
            tokens = newTokens;
        }
        
        tokensSold = tokensSold.add(tokens); // Increment raised amount
        remainingTokens = cap.sub(tokensSold);
        if(returnWei > 0){
            msg.sender.transfer(returnWei);
            emit Transfer(address(this), msg.sender, returnWei);
        }
        
        balances[msg.sender] = balances[msg.sender].add(tokens);
        emit Transfer(address(this), msg.sender, tokens);
        totalSupply_ = totalSupply_.add(tokens);
        owner.transfer(weiAmount);// Send money to owner
    }
    

    /**
     * @dev startIco starts the public ICO
     **/
    function startIco() public onlyOwner {
        require(currentStage != Stages.icoEnd);
        currentStage = Stages.icoStart;
    }
    

    /**
     * @dev endIco closes down the ICO 
     **/
    function endIco() internal {
        currentStage = Stages.icoEnd;
        // Transfer any remaining tokens
        if(remainingTokens > 0)
            balances[owner] = balances[owner].add(remainingTokens);
        // transfer any remaining ETH balance in the contract to the owner
        owner.transfer(address(this).balance); 
    }

    /**
     * @dev finalizeIco closes down the ICO and sets needed varriables
     **/
    function finalizeIco() public onlyOwner {
        require(currentStage != Stages.icoEnd);
        endIco();
    }
    
}
 
/**
 * @title LavevelToken 
 * @dev Contract to create the Lavevel Token
 **/
contract AlexToken is CrowdsaleToken {
    string public constant name = "AlexToken";
    string public constant symbol = "ALT";
    uint32 public constant decimals = 18;
}

Рефераты:  Авторитет, лидерство и власть в управлении организацией

Больше подробностей про смарт-контракты можно узнать в статье:

Блокчейн и его применение

Биткоин — это не золото и не деньги, а обобщенный и удачный пример работы децентрализованных сетей, где каждый может стать участником и следить за честным исполнением всех событий.

Стоимость таких технологий нельзя считать оправданной или наоборот, недостаточной — здесь все, как на настоящем фондовом рынке. Если продукт хороший и правда что-то из себя представляет, то и цифровой актив прибавит в капитализации и стоимости. Если наоборот — проект считается провалом.

Конечно, все, что связано с блокчейн и монетами, пока еще является сильно волатильными инструментами, которые порой неподвластны даже очень крутым игрокам на рынке. И все потому, что основной объем инвестиций в этой сфере делают обычные люди, а не профессиональные игроки с Уолл-стрит.

И все же, несмотря на сложность и непонятность некоторых вопросов в этой индустрии, многие уже понимают ценность, удобство и безопасность децентрализованных технологий. Каждый день появляются новости о том, как государства внедряют инновации в привычные для людей сферы.

С биткоином или любым другим проектом, децентрализованные технологии станут неотъемлемой частью жизни современных структур. Ведь люди хотят обезопасить себя от мошенников, коррупционеров, хотят научиться контролировать свою жизнь больше, чем когда-либо. А блокчейн — это первый и самый большой шаг к новой системе.

Материал обновлен пользователем Urik26

Идентификация

Каждая блокчейн транзакция должна быть подписана цифровой подписью. Поэтому для совершения транзакции каждый участник должен иметь пару ключей: private / public. Иногда пару ключей называют кошелек (wallet), т.к. ключи однозначно связаны с уникальным цифровым адресом и балансом участника. В реальности ключи и адреса — это просто строки цифр в разных системах счисления. Примеры ключей и адреса кошелька:

Private key: 0a78194a8a893b8baac7c09b6a4a4b4b161b2f80a126cbb79bde231a4567420f
Public key: 0579b478952214d7cddac32ac9dc522c821a4489bc10aac3a81b9d1cd7a92e57ba
Address: 0x3814JnJpGnt5tB2GD1qfKP709W3KbRdfb27V

Для создания цифровой подписи в блокчейнах используется алгоритм, основанный на эллиптических кривых: Elliptic Curve Digital Signature Algorithm (ECDSA). Для его работы приватный ключ (256 битное число), обычно, берется случайно. Число вариантов ключей составляет 2 в степени 256, поэтому можно говорить о практической невозможности совпадения значений приватных ключей.

Далее, публичный ключ получается из приватного путем умножения его значения на координаты точки, находящейся на эллиптической кривой, в результате чего получаются координаты новой точки этой же кривой. Это действие гарантирует получение пары ключей, пригодной для цифровых подписей транзакций. И наконец адрес кошелька однозначно вычисляется из публичного ключа.

Есть масса статей с подробностями по криптографии, используемой в блокчейне, например: Bitcoin in a nutshell — Cryptography

Приватный ключ должен быть строго секретен и храниться в безопасности. Публичный ключ известен всем. При утере приватного ключа доступ к активу (монетам) восстановить невозможно и деньги будут утеряны навсегда. Поэтому задача надежного хранения приватных ключей крайне актуальна, т.к. это не банк, куда всегда можно прийти с паспортом и восстановить счет. Существует целая индустрия по производству, так называемых, холодных криптокошельков, похожих на флешки:

или можно использовать более надежные способы, как пример, выбивать значение приватного ключа на жетонах:

Как будут работать смарт-контракты


Независимо от того, какой вариант блокчейна победит, смарт-контракты потребуют целого ряда поддерживающих технологий. Эти дополнительные технологии в настоящее время разрабатываются. И они будут очень важны для расширения технологии блокчейн.

«Как только у нас появятся смарт-контракты, возникнет целый ряд проблем», — говорит Ари Джуэлс, содиректор IC3 Корнеллского университета. Эти проблемы делятся на несколько категорий.

Во-первых, блокчейны не смогут хранить много данных. Это будет проблемой для многих проектов, которые, например, предлагают хранить и передавать потоковое видео. Им просто напросто не хватит места для хранения.

Рефераты:  Эрик Эриксон: эго-теория личности

Технология блокчейн записывает входы и выходы каждой монеты в сеть, а также содержимое дополнительного поля, которое позволяет провести до 40 байтов метаданных для каждой транзакции. Это все.

Еще одна проблема блокчейна заключается в том, что технология сама по себе не знает, что происходит в реальном мире. Это важно в случае, если смарт-контракт — это система страхования авиабилетов. Блокчейн должен знать, когда самолет взлетает или приземляется, а для этого нужно запрашивать данные веб-сайтов.

В идеале разработчики будут создавать блокчейны для хранения и доступа к данным с учётом слабых сторон — уязвимости к цензуре и возможности отмены блокировок. Для этого нужно тщательно рассмотреть, каким «доверенным сторонам» можно фактически доверять.

Проблема хранения данных может быть решена с помощью распределенных служб обмена файлами, таких как децентрализованная система облачных хранилищ, протоколов Labs Interplanetary Database или Storj Labs. Это системы, которые позволят людям во всем мире получить дополнительное пространство на своих жестких дисках.

Импортировать данные в режиме реального времени можно будет при помощи «оракулов». Это службы, которые получают оплату за надежный запрос данных в реальном времени и подачу их на смарт-контракты блокчейн.

В IC3 Джелус разработал систему обеспечения защищенного датафида для смарт-контрактов Town Crier. Она защищает вводимые в блокчейн данные от подделки. Процесс работы построен на использовании доверенного программного обеспечения на процессорах Intel.

Как доказательство работы делает технологию блокчейн надёжной

Для того чтобы создавать новые блоки, майнерам необходимо владеть всей информацией о транзакциях. Они конкурируют между собой, так как майнер, первым создавший блок, получает оплату за эту услугу. Вопрос в том, что мешает майнеру удалить предыдущие транзакции в блокчейне.

Чтобы это избежать, у всех майнеров в сети должна быть одинаковая копия блокчейна.

Когда майнер, добавляет новый блок, он должен предоставить криптографическое доказательство транзакции. Чтобы получить доказательство, майнер проводит блок через несколько раундов хэш-функции — вычисления, которое берет часть данных произвольного размера и переводит их в бессмысленную буквенно-цифровую строку с фиксированной длиной, которая называется хешем.

Чтобы сделать процесс более надёжным, алгоритм блокчейн требует, чтобы полученный хеш начинался с определенного количества нулей. Невозможно заранее предсказать, какой хеш будет выдавать заданный набор данных, поэтому майнеры запускают вычисления снова и снова, каждый раз вставляя случайное число в набор данных. Когда это число изменяется, возникает новый хэш. В итоге майнеры получают правильное количество нулей.

Майнер, который находит правильный хеш, отправляет блок другим майнерам. Они его проверяют и добавляют к полной версии блокчейн, содержащуюся на их компьютерах.

Это можно сравнить с закрыванием двери. Предположим, у человека есть замок, и набор ключей, один из которых может его закрыть. Он должен попробовать все ключи, прежде чем найдёт правильный. И после этого оставить его в замке, чтобы другие могли проверить, что ключ подходит.

Майнеры тратят свои средства на поддержку сети — покупают оборудование и платят за электроэнергию. Чтобы изменить блок в блокчейне и провести одну и ту же транзакцию дважды, им придётся потратить в два раза больше своих денег, поэтому обманывать становится невыгодно.

Кроме того, с каждым новым блоком возрастает стоимость изменения предыдущих. Новые блоки хранят хеш стоящего перед ними блока. Любые изменения в старых блоках приведут к недействительным хэшам для всех последующих блоков. Следовательно, невозможно вставить фиктивные модификации в предыдущий блок без повторения всей работы, которая была выполнена после этого блока.

Получается, что майнеры предоставляют дорогостоящие доказательства, а затем получают деньги за свою работу. Таким образом Сатоши создал первую жизнеспособную одноранговую цифровую валюту. Но он также решил более общую проблему, которая на протяжении десятилетий беспокоила ученых.

Биткоин, который за 8 лет ни разу не отключался от сети на длительный период, надежно стимулирует майнеров выполнять работу добросовестно, обеспечивая единую сеть. В итоге получается защищённая, постоянно растущая цепочка данных, которую любой, у кого есть подключение к интернету, может проверять и дополнять.

Как работает блокчейн

image

В 2009 году анонимный хакер (или группа хакеров), под псевдонимом Сатоши Накамото, создал первую цифровую валюту. В этой системе деньги были лишь инструментом учета, методом абстрагирования стоимости, назначения собственности и предоставления средств для совершения сделок.

Для выполнения этих функций исторически использовались денежные средства. Обладание физическими токенами — монетами, позволяет людям лично заключать сделки между собой. Наличные деньги достаточно трудно скопировать, поэтому нет необходимости в полном учете того, кому принадлежит определенная часть денежной массы.

Тем не менее, если создать таблицу, в которой указано, кому и сколько принадлежит денег, монеты и купюры станут ненужными. Банки и обработчики платежей уже частично сублимировали физическую валюту в цифровые записи, отслеживая и обрабатывая транзакции в своих закрытых системах.

Биткоин завершил преобразование, создав единый универсальный цифровой регистр, называемый блокчейном. Эта технология получила такое название, потому что похожа на цепь — внести в неё изменения можно только в конец блоков. Каждое новое дополнение содержит набор новых транзакций.

Блокчейн для биткоина, в отличие от книг бухгалтерского учёта, которые ведут традиционные финансовые учреждения, расположен на компьютерах по всему миру. Эти данные доступны для всех, у кого есть подключение к интернету. Майнеры, — владельцы компьютеров, на которых хранится информация блокчейна, — отвечают за обнаружение запросов транзакций от пользователей, их объединение, проверку и добавление в блокчейн в виде новых блоков.

Процесс валидации устанавливает, что человек фактически владеет биткоинами после транзакции, и что он еще не потратил их в другом месте. Собственность в блокчейне определяется двумя криптографическими ключами. Первый ключ находится в блокчейне в открытом доступе.

Второй доступен только его владельцу. Такие ключи используются для шифрования электронных сообщений. Когда кто-то отправляет зашифрованное сообщение, он использует открытый ключ. Получатель при открытии письма использует закрытый ключ и расшифровывает сообщение.

В технологии блокчейн транзакции подписываются при помощи закрытых ключей, соответствующих открытым ключам, присвоенным монетам, которые хотят потратить. И когда транзакция обрабатывается, этим монетам присваивается новый открытый ключ.

Когда в оформлении операции участвует несколько лиц, становится важен вопрос необратимости. Если бы блокчейн управлялся одним банком с набором известных валидаторов, работающих в рамках одной юрисдикции, то выполнение транзакций было бы простым делом.

Но для биткоина нет центрального банка, обеспечивающего соблюдение правил. Майнеры работают анонимно во всем мире, несмотря на разнообразие культур, различие правовых систем и нормативных обязательств. Поэтому нет способа привлечь их к ответственности. Необратимость операции обеспечивает код биткоина. Он использует схему, которая называется доказательством работы.

Консенсус

Для записи блока в блокчейн сеть должна прийти к консенсусу. Давайте вспомним, задачу достижения консенсуса в компьютерных сетях связи. Проблема формулируется, как задача византийских генералов BFT (

). Опуская живописное описание проблем византийской армии, задачу можно сформулировать так: как узлам сети прийти к общему результату, если часть узлов сети могут сознательно их искажать. Существующие алгоритмы решения задачи BFT показывают, что сеть может функционировать правильно, если мошенников меньше 1/3. Почему в сети Bitcoin не был применен консенсус BFT? Зачем нужно было использовать PoW? Есть несколько причин:


Помимо PoW существует еще несколько консенсусов, которые используются в современных блокчейнах, например:

Немного остановимся на консенсусе PoS, т.к. именно PoS и его разновидности получили наибольшее распространение в приватных блокчейнах. Почему именно в приватных? С одной стороны, характеристики PoS лучше по сравнению с PoW, т.к. для достижения консенсуса нужны меньшие вычислительные ресурсы, а значит увеличивается скорость записи данных в блокчейн.

Рефераты:  Близорукость

Консенсус PoS основан на выборе узла, который может записать блок с транзакциями в блокчейн в зависимости от количества средств на счету, вернее, не на счету, а в залоге, Т.е. чем у тебя больше средств в залоге, тем с большей вероятностью сеть выберет твой узел для записи блока.


Существует еще ряд консенсусов, которые пока не получили широкого распространения, здесь просто перечислю для информации, а обзор самих алгоритмов консенсуса можно посмотреть, например, в статье:

Развитие технологии

Биткоин был придуман как акт неповиновения. Криптовалюта появилась вскоре после мирового экономического кризиса и рекламировалась, как средство от несправедливости и коррумпированности традиционной финансовой системы. Создатели были уверены, что когда биткоин станет более популярным, он будет конкурировать с реальными деньгами и в конечном итоге вытеснит те институты, которые привели к кризису.

Неофициальный лозунг биткоина: «Верим в криптографию», прямо говорит о том, кто виноват в проблемах экономики: посредники, банкиры, «доверенные» третьи стороны, которым на самом деле нельзя доверять. Эти люди просто создают проблемы другим, уменьшая прибыль и усложняя транзакции.

Биткоин стремился заменить услуги, предоставляемые этими посредниками с помощью специального кода и криптографии. Когда человек оплачивает ипотеку, между его банком и другими финансовыми организациями в фоновом режиме происходит ряд операций, благодаря которым деньги снимаются со счёта пользователя.

Биткоин и другие криптовалюты заменяют эти фоновые операции и транзакции при помощи программного обеспечения — распределенной и защищенной базы данных, называемой блокчейном. При этом процесс смены владельцев токена биткоина контролируют множество компьютеров.

Спустя 8 лет после создания блокчейна, технологию пытаются применить к процедурам и процессам не связанным с передачей денежных средств.

Может ли блокчейн связать людей, которые сдают жильё, с путешественниками и предложить сторонам прозрачную платформу для оплаты? Может ли блокчейн выступать в качестве хранилища и площадки для воспроизведения фильмов, шоу и других цифровых средств массовой информации, сохраняя при этом отчисления и передавая их создателям контента?

Если это так, то технология блокчейн поможет избавиться от Uber, Netflix и, например, страховых компаний.

Это не предположения, а лишь некоторые вещи, которые сейчас строятся на Ethereum — блокчейн-платформе, которая дистанционно размещает программное обеспечение на распределенной компьютерной системе, называемой Ethereum Virtual Machine. Блокчейн Ethereum, на котором работает криптовалюта эфир, на данный момент наиболее открыт для экспериментов.

Но эта открытость не всегда играет на руку. Новые схемы блокчейна создаются каждый день, в том числе и крупнейшими техническими корпорациями. Microsoft предлагает своим клиентам инструменты для экспериментов с криптовалютой в своем облаке Azure. IBM, Intel и другие сотрудничают с хабом Hyperledger — открытой платформой для разработки бизнес-ориентированных блокчейнов.

И даже биткоин, который работает на первом и самом успешном блокчейне, модернизируется для приложений, о которых его создатели никогда не мечтали.

Но ни один блокчейн не может похвастаться массовым использованием. Никакая концепция или стратегия еще не привела к революции ни в одной отрасли. Биткоином пользуется не более чем 375 000 человек в мире в день.

Какие блокчейн-платформы сохранятся, а какие начнут медленно опускаться на дно? Чтобы сделать какой-либо прогноз, нужно понять, что такое блокчейн и логически соотнести его с биткоином.

Финансирование

Чтобы перевести все современные услуги на технологию блокчейн, нужны большие деньги на технику и исследования

Вопрос в том, как получить финансирование на проект, который уничтожит многие крупные корпорации. В идеале нужно создать открытые блокчейны, как Ethereum, и доверить хранение данных тем людям, которые его создали. В таких условиях компания не может выжить из бизнес-модели, которая собирает и продает поведение браузера, историю покупок или данные о местоположении.

Тем не менее, уже появился потенциальный механизм финансирования для блокчейнов — Initial coin offering или ICO. Он оказался чрезвычайно прибыльным, хотя и юридически сомнительным.

Например, человек решил использовать приложение. Но он не может расплатиться обычной валютой, ему нужно купить специальные монеты для этого приложения, которые заранее выпустили на рынок, и расплатиться ими.

В реальном мире это бы работало так: кто-то открыл прачечную и выпустил билеты, которыми можно оплатить стирку. Владелец заранее продаёт все билеты людям, а они потом, при необходимости, перепродают их другим.

На сегодняшний день более полумиллиарда долларов вложено в продажу токенов, и в последнии месяцы эти цифры только растут. Например, блокчейн Tezos в июле установил рекорд, собрав более 200 миллионов долларов через ICO.

Из-за таких огромных инвестиций появились жалобы пользователей на лицемерие создателей биткоинов. «Создатели блокчейнов, которые продвигают эти схемы, на самом деле демонстрируют всю скупость и алчность, приписываемую ими стандартным финансовым услугам и поддерживаемым правительством валютам, — говорит Престон Бирн, соучредитель Monax Industries — открытой платформы для разработчиков блокчейнов, — когда деньги начинают течь в их направлении, они становятся такими же небрежными в отношении общественности, которой они когда-то были».

Другие утверждают, что ICO, как новый класс инвестиционных инструментов, столь же разрушителен, как и финансируемые приложения.

«Деньги не являются корнем зла. Равенство является корнем зла», — говорит Джоэл Монегро — создатель Placeholder — нового фонда, посвященного технологиям блокчейн.

Он считает, что предоставление основателям и сотрудникам капитала компании побуждает их накапливать богатство, а не использовать его для улучшения своих продуктов.

С другой стороны ICO — не только финансовый инструмент, но и средство доступа к технологии блокчейн. Из этого следует, что чем больше людей используют услугу, тем больше будет спрос на токен, необходимый для доступа.

«Мой стимул заключается не в том, чтобы извлечь больше прибыли, а в том, чтобы больше людей использовали приложение, потому что стоимость токена зависит от стоимости использования услуги. Вы полностью переворачиваете стимулы», — говорит Монегро.

В Соединенных Штатах использование ICO, вероятно, подходит к концу. В конце июля Комиссия по ценным бумагам и биржам США предупредила о том, что многие ICO попадают в категорию ценных бумаг и поэтому должны работать по определённым правилам.

«Времена изменились и очень быстро. Некоторые из ранних последователей биткоина испытывали трудности с финансами три и четыре года назад, но держались за свои убеждения и свои монеты и очень хорошо сейчас себя чувствуют, — говорит Джонатан Леви, создатель Hacera, — нам по-прежнему необходимо, чтобы биткоин и Ethereum работали в более крупных масштабах, поэтому предприятиям необходимо децентрализовать данные и обеспечить их конфиденциальность.

Шаг 2: транзакции

Каждый сидит с пустым листом и ручкой в руке и готов записать любую транзакцию, которая произойдет внутри этой системы.

#2 send 10$ to #5
#2 send 10$ to #5

Для создания транзакции, номер 2 сообщает всем: « Я, номер #2 пересылаю #5 10$». Каждый из участников системы проверяет, имеет ли #2 достаточный баланс для произведения данной транзакции. В случае, если баланс номера #2 позволяет это сделать, то каждый делает запись у себя на странице. Это происходит до того момента, пока на странице не закончится место для записи новых транзакций

Предположим, что страница имеет вместимость 10 транзакций. Т.к. все заполняют одну и ту же информацию, место на страницах у всех кончится одновременно.

И вот настало время, всем отправить заполненную страницу в папку и создать новую страницу для ведения учета транзакций. И так повторять начиная с шага №2.

Оцените статью
Реферат Зона
Добавить комментарий