1、请在进入答题前,确保设备性能和系统条件符合线上考试要求
2、做题中请勿使用F功能键或查看源代码,如使用系统会记录下来
3、诚信考试,请勿上网搜索答案,与其他考生交流,求助外援等
4、做题中途遇到问题被退出,在有效期内仍可进入再次进行答题
区块链是一种( )的数据记录格式。
A. 中心化、可篡改、私有
B. 分布式、去中心化、不可篡改
C. 单机、集中式、可修改
D. 分布式、中心化、可追溯
区块链中,后一个区块通过记录( )与前一个区块相连,形成链式结构。
A. 随机数
B. 交易数量
C. 前一个区块的哈希值
D. 时间戳
下列不属于区块链五大核心特征的是( )。
A. 去中心化
B. 不可篡改
C. 集中维护
D. 公开透明
比特币采用( )哈希算法,输出长度为256位,通常用64位十六进制字符串表示。
A. MD5
B. SHA-256
C. SHA-1
D. RSA
下列关于哈希函数特性的描述,错误的是( )。
A. 确定性:相同输入得到相同输出
B. 快速计算:能快速算出任意输入的哈希
C. 可逆性:能从哈希值反推出原始输入
D. 抗碰撞:很难找到两个不同输入得到相同哈希
区块链中的第一个区块称为( ),创建于2009年。
A. 创世区块
B. 根区块
C. 主区块
D. 初始区块
创世区块的前一个区块哈希通常设置为( )。
A. 随机数
B. 自身哈希
C. 全零“0000…”(占位符)
D. 时间戳
比特币区块头中,用于形成链的关键字段“父区块头哈希值”占( )字节。
Merkle树是一种( )数据结构,用于快速归纳和校验大规模数据完整性。
A. 哈希二叉树
B. 哈希表
C. 链表
D. 有序数组
在构建Merkle树时,如果某一层节点数为奇数,落单的节点应( )。
A. 直接丢弃
B. 复制一份自己与自己配对
C. 用零填充后再配对
D. 跳到下一层计算
比特币中的Merkle树使用的是( )。
A. 单次SHA-256
B. 双重SHA-256(double-SHA256)
C. MD5
D. SHA-1
比特币、以太坊等区块链节点通常使用( )存储链上数据。
A. MySQL
B. Oracle
C. LevelDB
D. SQL Server
LevelDB是一种( )数据库。
A. 关系型
B. 文档型
C. 嵌入式键值(Key-Value)
D. 图
LevelDB中,向数据库写入键值对使用( )操作。
A. Get
B. Put
C. Delete
D. RangeIter
在LevelDB中,使用Get读取一个不存在的key,返回( )。
A. 空字符串
B. 0
C. None
D. 抛出异常
LevelDB的key和value都必须使用( )类型。
A. 字符串
B. 整数
C. 字节(bytes)
D. 列表
在挖矿(工作量证明PoW)中,矿工不断尝试( ),直到区块哈希以“0000”开头。
A. 时间戳
B. 交易数据
C. Nonce(随机数)
D. 版本号
下列不属于LevelDB核心特点的是( )。
A. 按键排序存储
B. 批量原子操作
C. 支持SQL查询
D. Snappy压缩
区块链可以理解为“区块+链”,每个区块通过哈希值连接成一条链。( )
区块链由网络中的某个中心服务器统一维护和管理。( )
一旦数据写入区块链,篡改一个区块会导致后续所有区块的哈希值失效。( )
哈希函数是可逆的,可以从哈希值反推出原始输入。( )
区块主体主要记录区块的元数据,用于验证区块的合法性和连接性。( )
区块头中只需存储32字节的Merkle根,就能代表整个区块的所有交易。( )
LevelDB是嵌入式数据库,无需单独安装数据库服务器即可使用。( )
LevelDB的RangeIter会按键的字典序依次返回所有键值对。( )
挖矿中只有先找到使哈希以指定数量“0”开头的Nonce,才证明付出了计算量并获得记账权。( )
区块链的五大核心特征包括:________、不可篡改、________、集体维护、公开透明。
填空1 ____________
填空2 ____________
一个完整的区块由________和________两部分组成。
填空1 ____________
填空2 ____________
SHA-256算法输出为________位十六进制字符串(32字节)。
在Python中,计算SHA-256哈希需要导入________库。
LevelDB的基本操作包括Put(写入)、________(读取)、Delete(删除)和________(遍历)。
填空1 ____________
填空2 ____________
Nonce是“Number used once”的缩写,在挖矿中是指只使用一次的________。
编写Python代码,定义一个Block类并生成创世区块。要求:(1)定义Block类,包含index(区块高度)、previous_hash(前一个区块哈希)、time_stamp(时间戳)、data(区块数据)、hash(当前哈希)等属性;(2)实现__init__构造方法和get_hash()方法,使用SHA-256计算区块哈希;(3)编写creat_genesis_block()函数,创建创世区块(previous_hash设为“0000”,data设为“Genesis block”)。
使用Python操作LevelDB,完成数据的写入、读取、删除和遍历。要求:(1)打开/创建名为“students”的数据库;(2)写入三条键值对数据(如name、age、major);(3)读取并打印name的值;(4)删除age,然后遍历打印数据库中所有剩余数据。