p4.BTC-实现
比特币是基于 transaction-based ledger.(隐私保护性很好,但是在转账中需要说明币的来源,比较麻烦)
比特币的全节点需要维护一个UTXO的数据结构(unspent transaction output ).
获得记账权后,为了自己的交易信息还会在区块中打包别人的交易信息,为了鼓励这种维护账本的行为,协议中也规定了相应的transaction fee。不过比较少,一般是千分之几个BTC。
以太坊是基于 account-based ledger(这样就不用说明币的来源).
挖矿的概率分析

比特币的初始来源只有挖矿奖励,根据奖励的规定,比特币的总量是可以计算出来的(2100w BTC)。
Bitcoin is secured by mining.
假设某个恶意节点获得记账权:
Bitcoin是要求扩张最长合法链,对应包含非法交易的区块,如果没有被诚实节点接受,则它不在最长合法链上,不仅无法交易不成功,还会损失区块奖励。
Bitcoin的不可篡改性是通过多个诚实节点的确认后,篡改性概率上成指数型下降,一般是在一个新生产的区块上后面经过6个确认后,认为前面的交易是不可篡改的。
分叉回滚交易,实现双花攻击
正常情况下,也存在合法交易没有被写入区块链的,可能就是当时交易太多了,因为规定每个区块最大不超过1M字节。那只能等到下一个区块发布的时候去记账。
p4.BTC-实现的更多相关文章
- Run P4 without P4factory - A Simple Example In Tutorials.
前言 本文是我运行P4社区于Github开源教程Tutorials中的P4 SIGCOMM 2015 Tutorial一些实战小结,Github链接: Github. 测试的例子:P4 SIGCOMM ...
- Sublime P4语法高亮设置
Github插件链接:p4-syntax-highlighter 首先安装Package Control. 进入Package界面,我的目录: /Users/wasdns/Library/Applic ...
- P4基函数
July , P4 syms p1 p2 p3 phi(:,) = /*p1.*(*p1-).*(*p1-).*(*p1-); phi(:,) = /*p2.*(*p2-).*(*p2-).*(*p2 ...
- P4 前端编译器p4c-bm、后端编译器bmv2命令安装 make error问题
参考:Github 安装p4c-bm: sudo pip install -r requirements.txt sudo pip install -r requirements_v1_1.txt / ...
- P4行为模型BMV2依赖关系安装:thrift nanomsg nnpy安装
由于安装p4factory的步骤需要OF的支持,我需要下载p4的行为模型BMV2: thrift是支持BMV2的软件框架:nanomsg是一个实现了几种"可扩展协议"的高性能通信库 ...
- P4实验问题 解决python模块导入
参考:Python导入自定义包或模块 在执行./run_demo.sh的过程中,遇到了python的模块问题: root@ubuntu:/home/wasdns/tutorials/SIGCOMM_2 ...
- Run P4 without P4factory - A Simple Example In Tutorials. -2 附 simple_router源码
/* Copyright 2013-present Barefoot Networks, Inc. Licensed under the Apache License, Version 2.0 (th ...
- Run P4 without P4factory - A Simple Example In Tutorials. -2
Reference:Github-Tutorial Exercise 2: Implementing TCP flowlet switching 实验准备: 参考之前的博客:Run P4 withou ...
- p4-hlir/test源码 stateful.p4 control_flow_opt.p4
stateful.p4 #include "includes/headers.p4" #include "includes/parser.p4" action ...
- OpenFlow.p4 源码
/* Copyright 2013-present Barefoot Networks, Inc. Licensed under the Apache License, Version 2.0 (th ...
随机推荐
- WebGL学习笔记(一):理解基本概念和渲染管线
WebGL 是以 OpenGL ES 2.0 为基础的 3D 编程应用接口. 渲染管线(图形流水线) 渲染管线是指将数据从3D场景转换成2D图像,最终在屏幕上显示出来的总过程.它分为几个阶段:应用阶段 ...
- SpringCloud基础知识
什么是SpringCloud Spring Cloud是一系列框架的有序集合. 为什么用SpringCloud Spring Cloud涵盖面广,能够与Spring Framework.Spring ...
- 基于Emit的C#下DataTable转实体类方法,一直报错.
xxxx ;WITH Tab AS ( SELECT CAST(ROW_NUMBER()OVER(ORDER BY CC.CreateTime DESC) AS INT) AS Sequency, ) ...
- bitmap以及异或运算法
一 有40亿个整数,再给一个新的整数,需要判断新的整数是否在1亿个整数中. 此处需要用到bitmap方法,每个整数用一个bit表示,1表示存在,0表示不存在.因此一个4字节的int=32个bit也就是 ...
- datatables:initComplete和drawCallback比较
drawCallback: 对表的每个绘制事件执行操作非常有用 - 例如,您可能希望使用新显示的数据更新外部控件,或者启用服务器端处理,您可能希望将事件分配给新创建的元素.此回调旨在实现此目的,并将在 ...
- Node.js 多线程完全指南
[原文] 很多人都想知道单线程的 Node.js 怎么能与多线程后端竞争.考虑到其所谓的单线程特性,许多大公司选择 Node 作为其后端似乎违反直觉.要想知道原因,必须理解其单线程的真正含义. Jav ...
- 解决在manjaro下,vscode无法将chrome作为默认浏览器打开
Same issue. The solution is simple. Find the name of the exec command, for google chrome in arch lin ...
- Procedural Mesh Component in C++:Getting Started
转自:https://wiki.unrealengine.com/Procedural_Mesh_Component_in_C++:Getting_Started I create a simple ...
- 【Python开发】【编程开发】各种系统的清屏操作命令
mac os x terminal清屏快捷键 cammand+k linux系统清屏快捷键 ctrl+l linux系统命令行清屏命令 clear windows 命令行清屏命令 cls Matlab ...
- (生鲜项目)02. app与model设计
第一步: 设计app 1. 根据业务需求,设计合适的app板块,这里,我们将拥有goods,trade,user_operation, users四个app 2. 然后去注册app 第二步: 设计us ...