精华内容
下载资源
问答
  • 区块

    2018-04-29 18:37:39
    0x00 摘要区块是区块链的组成基本结构,也是交易信息的载体,矿工通过挖矿的形式来产生新的区块并获得奖励,新块产生的过程也是一个交易打包的过程,只有加入到区块中的交易才会被系统所有其他节点所认可,才是有效...

    0x00 摘要

    区块是区块链的组成基本结构,也是交易信息的载体,矿工通过挖矿的形式来产生新的区块并获得奖励,新块产生的过程也是一个交易打包的过程,只有加入到区块中的交易才会被系统所有其他节点所认可,才是有效的。

    0x01 CBlockHeader

    /** 
     * 网络中的节点不断收集新的交易,然后一个Merkle树的形式打包进区块中,
     * 打包的过程就是要完成工作量证明的要求,当节点解出了当前的随机数时,
     * 它就把当前的区块广播到其他所有节点,并且加到区块链上。
     * 区块中的第一笔交易称之为CoinBase交易,是产生的新币,发送给区块的产生者
     */
    class CBlockHeader
    {
    public:
        // header
        int32_t nVersion;  // 版本
        uint256 hashPrevBlock; //前一个区块的hash
        uint256 hashMerkleRoot; // Merkle树根
        uint32_t nTime;  // 时间戳
        uint32_t nBits; // POW难度
        uint32_t nNonce; // 要找的随机数
    
        CBlockHeader()
        {
            SetNull();
        }
    
        ADD_SERIALIZE_METHODS;
    
        template <typename Stream, typename Operation>
        inline void SerializationOp(Stream& s, Operation ser_action) {
            READWRITE(this->nVersion);
            READWRITE(hashPrevBlock);
            READWRITE(hashMerkleRoot);
            READWRITE(nTime);
            READWRITE(nBits);
            READWRITE(nNonce);
        }
    
        void SetNull()
        {
            nVersion = 0;
            hashPrevBlock.SetNull();
            hashMerkleRoot.SetNull();
            nTime = 0;
            nBits = 0;
            nNonce = 0;
        }
    
        bool IsNull() const
        {
            return (nBits == 0);
        }
    
        uint256 GetHash() const;
    
        int64_t GetBlockTime() const
        {
            return (int64_t)nTime;
        }
    };
    • 1
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56

    0x02 CBlock

    class CBlock : public CBlockHeader
    {
    public:
        // network and disk
        std::vector<CTransactionRef> vtx; // 所有的交易
    
        // memory only
        mutable bool fChecked;  // 交易是否验证过并构成Merkle树
    
        CBlock()
        {
            SetNull();
        }
    
        CBlock(const CBlockHeader &header)
        {
            SetNull();
            *((CBlockHeader*)this) = header;
        }
    
        ADD_SERIALIZE_METHODS;
    
        template <typename Stream, typename Operation>
        inline void SerializationOp(Stream& s, Operation ser_action) {
            READWRITE(*(CBlockHeader*)this);
            READWRITE(vtx);
        }
    
        void SetNull()
        {
            CBlockHeader::SetNull();
            vtx.clear();
            fChecked = false;
        }
    
        CBlockHeader GetBlockHeader() const
        {
            CBlockHeader block;
            block.nVersion       = nVersion;
            block.hashPrevBlock  = hashPrevBlock;
            block.hashMerkleRoot = hashMerkleRoot;
            block.nTime          = nTime;
            block.nBits          = nBits;
            block.nNonce         = nNonce;
            return block;
        }
    
        std::string ToString() const;
    };
    展开全文
  • 区块区块鱼.zip

    2020-02-14 17:41:27
    网上下载的区块狗源代码,分享给大家!以前叫区块狗,其实里面写的区块鱼,我想了想应该是一套。叫啥都无所谓,就是区块动物,区块+动物就行了呗。要不试试区块外星人?
  • 区块主机:区块主机等
  • 华登区块宠物养殖系统莱特区块区块猫源码 完美运营版本.zip
  • 华登区块狗、摩根区块猪、区块神兽世界、区块猫、吉祥猪、区块猪、区块兔、区块十二生肖等等,都是玩法非常相似的区块链DAPP。 区块链APP每只宠物的生成由系统程序智能生成,任何人无法篡改,同时也增加游戏的趣味性...
  • 区块折叠-源码

    2021-02-14 02:49:41
    区块折叠
  • 区块链的数据结构是由包含交易信息的区块按照从远及近的顺序有序链接...区块链经常被视为一个垂直的栈,第一个区块作为栈底的首区块,随后每个区块都被放置在之前的区块之上。用栈来形象化表示区块依次堆叠这一概...

    目录:https://blog.csdn.net/qq_40452317/article/details/89646633

    区块链的数据结构是由包含交易信息的区块按照从远及近的顺序有序链接起来的。区块被从远及近有序地链接在这个链条里,每个区块都指向前一个区块。

    区块链经常被视为一个垂直的栈,第一个区块作为栈底的首区块,随后每个区块都被放置在之前的区块之上。用栈来形象化表示区块依次堆叠这一概念后,我们便可以使用 一些术语, 例如:“高度”来表示区块与首区块之间的距离;以及“顶部”或“顶端”来表示最新添加的区块。

    区块主标识符是它的加密哈希值,一个通过SHA256算法对区块头进行二次哈希 计算而得到的数字指纹。产生的32字节哈希值被称为区块哈希值,但是更准确的名称是:区块头哈希值,因为只有区块头被用于计算。

    例如:000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f 是第一个比特币区块的区块哈希值。区块哈希值可以唯一、明确地标识一个区块,并且任何节点通过简单地对区块头进行哈希计算都可以独立地获取该区块哈希值

    区块哈希值实际上并不包含在区块的数据结构里(这里指本区块,而不是子区块,父区块的哈希值存在子区块的区块头中),不管是该区块在网络上传输时,抑或是它作为区块链的一部分被存储在某节点的永久性存储设备上时。

    相反,区块哈希值是当该区块从网络被接收时由每个节点计算出来的。区块的哈希值可能会作为区块元数据的一部分被存储在一个独立的数据库表中,以便于索引和更快地从磁盘检索区块

    第二种识别区块的方式是通过该区块在区块链中的位置,即“区块高度(block height)”。第一个区块,其区块高度为 0,和之前哈希值 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f 所引用的区块为同一个区块。

    因此,区块可以通过两种方式被识别:区块哈希值或者区块高度。每一个随后被存储在第一个区块之上的区块在区块链中都比前一区块 “高”出一个位置,就像箱子一样,一个接一个堆叠在其他箱子之上。2017年1月1日的区块高度大约是446,000,说明已经有 446,000 个区块被堆叠在 2009 年 1 月 创建的第一个区块之上。

    和区块哈希值不同的是,区块高度并不是唯一的标识符。虽然一个单一的区块总是会有一个明确的、固定的区块高度, 但反过来却并不成立,一个区块高度并不总是识别一个单一的区块。

    两个或两个以上的区块可能有相同的区块高度,在区块链里争夺同一位置(这一现象就是区块链分叉)。区块高度也不是区块数据结构的一部分, 它并不被存储在区块里。当节点接收来自比特币网络的区块时,会动态地识别该区块在区块链里的位置(区块高度)。 区块高度也可作为元数据存储在一个索引数据库表中以便快速检索。

    一个区块的区块哈希值总是能唯一地识别出一个特定区块。一个区块也总是有特定的区块高度。但是,一个特定的区块高度并不一定总是能唯一地识别出一个特定区块。更确切地说,两个或者更多数量的区块也许会为了区块链中的一个位置而竞争。

    展开全文
  • Bitcoin 区块结构解析

    2021-01-07 19:32:54
    区块的结构 区块分为:区块头和区块区块头 区块头包括三组元数据: 用于连接前面的区块、索引自父区块哈希值的数据。 挖矿难度、Nonce(随机数,用于工作量证明算法的随机数)、时间戳(当前区块的生成时间) ...
  • Markdown 区块

    2020-02-13 15:55:09
    Markdown 区块引用是在段落开头使用 > 符号 ,然后后面紧跟一个空格符号: > 区块引用 显示结果如下: 区块引用 另外区块是可以嵌套的,一个 > 符号是最外层,两个 > 符号是第一层嵌套,以此类推: ...

    Markdown 区块引用是在段落开头使用 > 符号 ,然后后面紧跟一个空格符号:


    > 区块引用
    

    显示结果如下:

    区块引用

    另外区块是可以嵌套的,一个 > 符号是最外层,两个 > 符号是第一层嵌套,以此类推:

    > 最外层
    > > 第一层嵌套
    > > > 第二层嵌套
    

    显示结果如下:

    最外层

    第一层嵌套

    第二层嵌套

    区块中使用列表


    > 区块中使用列表
    > 1. 第一项
    > 2. 第二项
    > + 第一项
    > + 第二项
    > + 第三项
    

    显示结果如下:

    区块中使用列表

    1. 第一项
    2. 第二项
    • 第一项
    • 第二项
    • 第三项

    列表中使用区块

    如果要在列表项目内放进区块,那么就需要在 > 前添加四个空格的缩进。

    * 第一项
        > 我爱你
        > 我的祖国
    * 第二项
    

    显示结果如下:

    • 第一项

      我爱你
      我的祖国

    • 第二项
    展开全文
  • CSS区块网页模板

    2021-01-22 10:36:49
    CSS区块网页模板
  • EOS区块浏览器源码

    2021-01-14 17:54:54
    EOS区块浏览器源码
  • 基于沁水盆地寿阳和柿庄区块的地质和排采资料,从主采煤储层的资源性、储层流体可动性、压裂工程条件开展2个区块的对比分析,讨论寿阳区块煤层气开发的关键问题,提出下一步开发对策。结果表明:柿庄区块各煤层的资源性...
  • 区块结构

    千次阅读 2018-08-03 17:32:56
    它由一个包含元数据的区块头和紧跟其后的构成区块主体的一长串交易组成。区块头是80字节,而平均每个交易至少是250字节,并且平均每个区块至少包含超过500个交易信息。因而,一个包含所有交易的完整区块区块头大...

    结构详解

    首先,区块是一种被包含在公开帐簿(区块链)里聚合了交易信息的容器数据结构。它由一个包含元数据的区块头和紧跟其后的构成区块主体的一长串交易组成。区块头是80字节,而平均每个交易至少是250字节,并且平均每个区块至少包含超过500个交易信息。因而,一个包含所有交易的完整区块比区块头大1000倍不止,如下表:
    区块结构

    大小 字段 描述
    4字节 区块大小 用字节表示的该字段之后的区块大小
    80字节 区块头 组成区块头的几个字段
    1-9 (可变整数) 交易计数器 交易的数量
    可变的 交易 记录在区块里的交易信息

    区块头

    区块头由三组区块元数据组成。首先是一组引用父区块哈希值的数据,这组元数据用于将该区块与区块链中前一区块相连接。第二组元数据,即难度、时间戳和nonce,与挖矿竞争相关,详见第8章。第三组元数据是merkle树根(一种用来有效地总结区块中所有交易的数据结构)。如下表:

    区块头结构

    大小 字段 描述
    4字节 版本 版本号,用于跟踪软件/协议的更新
    32字节 父区块哈希值 引用区块链中父区块的哈希值
    32字节 Merkle根 该区块中交易的merkle树根的哈希值
    4字节 时间戳 该区块产生的近似时间(精确到秒的Unix时间戳)
    4字节 难度目标 该区块工作量证明算法的难度目标
    4字节 Nonce 用于工作量证明算法的计数器

    Nonce、难度目标和时间戳会用于挖矿过程。

    区块标识符:区块头哈希值和区块高度

    区块主标识符是它的加密哈希值,一个通过SHSA256算法对区块头进行二次哈希计算而得到的数字指纹。产生的32字节哈希值被称为区块哈希值,但是更准确的说是:区块头哈希值,因为只有区块头被用于计算。例如:

    000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f是第一个比特币区块的区块哈希值。

    区块哈希值可以唯一、明确地标识一个区块,并且任何节点通过简单地对区块头进行哈希计算都可以独立地获取该区块哈希值。
    请注意,区块哈希值实际上并不包含区块的数据结构里,不管是该区块在网络传输时,或者是它作为区块链的一部分被存储在某个节点的永久性设备上时。相反区块哈希值是当该区块从网络被接受时由每个节点计算出来的。区块的哈希值可能会作为区块元数据的一部分被储存在一个独立的数据库表中,以便于索引和更快地从磁盘检索区块。
    第二种识别区块的方式是通过该区块在区块链中的位置,即“区块高度(block height)”。第一个区块,其区块高度为0,和之前哈希值:

    00000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

    所引用的区块为同一个区块。因此,区块可以通过两种方式被识别:区块哈希值或者区块高度。每一个随后被存储在第一个区块之上的区块在区块链中都比前一区块“高”出一个位置,就像箱子一个接一个堆叠在其他箱子之上。2014年1月1日的区块高度大约是278,000,说明已经有278,000个区块被堆叠在2009年1月创建的第一个区块之上。
    和区块哈希值不同的是,区块高度并不是唯一的标识符。虽然一个单一的区块总是会有一个明确的、固定的区块高度,但反过来却不成立,一个区块高度并不总是识别一个单一的区块。两个或两个以上的区块可能具有相同的区块高度,在区块链里争夺同一位置。区块高度也不是区块数据结构的一部分,它并不被存储在区块里。当节点接收来自比特币网络的区块时,会动态地识别该区块在区块链里地位置(区块高度)。区块高度也可作为元数据存储在一个索引数据库表中以便快速检索。

    一个区块的区块哈希值总是能唯一地识别出一个特定区块。一个区块也总是有特定的区块高度。但是,一个特定的区块高度并不一定总是能唯一地识别出一个特定区块。更确切地说,两个或者更多数量的区块也许会为了区块链中的一个位置而竞争。

    创世区块

    区块链里的第一个区块创建于2009年,被称为创始区块。它是区块链里所有区块的共同祖先,这意味着你从任意区块,循链向后回溯,最终都将到达创世区块。
    因为创世区块被编入到比特币客户端软件里,所以每一个节点都始于至少包含一个区块的区块链,这能确保创世区块不会被改变。每一个节点都“知道”创世区块的哈希值、结构、被创建的时间和里面的一个交易。因此,每个节点都把该区块作为区块链的首区块,从而构建了一个安全的、可信的区块链的根。
    创始区块的哈希值:

    000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

    区块的链接 ##这里写图片描述

    //区块通过引用父区块头哈希值的方式,以链条的形式进行相连

    默克尔树(Merkle Tree)

    区块链中的每个区块都包含了产生于该区块的所有交易,且以Merkle Tree表示。
    Merkle Tree是一种哈希二叉树,它是一种用作快速归纳和校验大规模数据完整性的数据结构。这种二叉树包含加密哈希值。术语“树”在计算机学科常常用来表达具有分支的数据结构,但是树常常被道指显示(从小到大,从起始到发展这个规模我们应该能接受)。
    在比特币网络中,Merkle树被用来归纳一个区块中的所有交易,同时生成整个交易集合的数字指纹,且提供了一种校验区块是否存在某交易的高效途径。生成一棵完整的Merkle树需要递归地对哈希节点进行哈希,并将新生成地哈希节点插入到Merkle Tree中,直到只剩一个哈希节点,该节点就是Merkle Tree的根。在比特币的Merkle Tree中两次使用到了SHA256算法,因此其加密哈希算法也被称为double-SHA256。
    当N个数据元素经过加密后插入Merkle树时,你至多计算2*log2(N)次就能检查出任意某数据元素是否在该树中,这使得该数据结构非常高效。
    Merkle树是自底向上搭建的,在如下例子中,我们从A、B、C、D四个构成Merkle树树叶的交易开始

    展开全文
  • 该工程支持以太坊区块数据解析 远程api方式,blockchair.com 支持将解析后数据进行mysql数据库存储
  • 没错,就是目前很火的区块狗系统源码,此系统本人花一万多买的。现在淘宝上互钻上卖的都是这个源码。现在完全分享给大家。如果有能力的做二开更完美。
  • 本人亲测华登区块区块狗含教程完美运行源码,本源码仅供技术交流及参考,切勿用于商业途径,如用于非法或者商业途径于本人无关!!特此声明!!
  • 区块Block

    2018-05-17 11:19:53
    比特币源码研读(2)数据结构-区块Block上一篇基本认识了bitcoin源码结构和个模块代码的功能,今天看区块区块是组成区块的基本单位,我们可以通过bitcoin-cli命令查看一个区块的基本信息。bitcli-cli获取区块信息接...
  • 区块广播

    2018-03-31 22:16:00
    矿工挖出区块后,就进行网络广播,传递给相邻的节点,节点接收到新的区块后会进行一系列的验证,比如区块数据格式是否正确;区块头的哈希值小于目标难度;区块时间戳是否在允许范围之内;区块中第一个交易(且只有第...
  • 区块区块养殖系统源码无加密完整版 inux下 nginx/1.16.0 Php72 伪静态规则:location / { if (!-e $request_filename){ rewrite ^(.*)$ /index.php?s=$1 last; break; } } 数据库:MySQL...
  • 因为这些特殊区块的父区块(上一区块)和本区块(包含它们的区块)的爷爷区块(上上个区块)相同,也就是说,这些特殊区块是本区块的叔叔,所以叫“叔区块”。 对于以太坊的交易信息,我们在0719中介绍过,所以现在...
  • 创世区块

    千次阅读 2018-03-25 18:43:52
    北京时间2009年1月4日02:15:05,中本聪(Satoshi Nakamoto)制作了比特币世界的第一个区块——“创世区块”( Genesis block),新版本的比特币系统将它设定为0号区块,而旧版本的比特币系统设定它的序号为1。...
  • 区块jar包.zip

    2021-04-16 17:06:17
    区块
  • 添加1个私钥对象。 添加1个函数,用于启动peer节点时,...存在的问题:不仅peer写区块,order节点也会写区块区块模块是共享、公用的。这样写,可能有损源码的模块化程度。先这样,先把实验做出来,以后再改进。 ...
  • 目前很火的区块狗系统源码。本人在CSDN下载的该源码,解决了按照文档搭建出现的各种问题(如:Failed opening required ),该源码可正常运行。为了帮助大家能正常的运行,我把构建中需要注意的地方追加到文档后面。
  • 区块防御 资产 惊人资产。 自己运行 yarn yarn start
  • 立体区块信息网页模板
  • 网上流传的区块宠物类型的源码太多了,真正好用又好看的真没几个。这个除了界面漂亮响应速度和优化非常的不错。绝不是外面几百几千的垃圾货。 后台可对会员进行币种冲扣,可进行赠送赠送英雄。管理账户可设置不同...
  • HTML 区块

    2019-07-02 11:44:26
    HTML 区块元素 大多数 HTML 元素被定义为块级元素或内联元素。 块级元素在浏览器显示时,通常会以新行来开始(和结束)。 实例: <h1>, <p>, <ul>, <table>,<div> HTML 内联元素 ...
  • 这个区块链三国源码和以前发布的区块狗差不多,不过这个更好看安装测试没有任何问题 导入数据库文件 修改数据库配置文件\application\database.php 设置TP伪静态 后台:域名/admin admin 123456 各位访客请别拿到...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,806
精华内容 8,322
关键字:

区块