实验1

1)

在[网站](Block #364292: 000000000000000003dd2fdbb484d6d9c349d644d8bbb3cbfa5e67f639a465fe · Bitcoin Explorer - Blockstream.info](https://blockstream.info/block/000000000000000003dd2fdbb484d6d9c349d644d8bbb3cbfa5e67f639a465fe?expand))中获得了如下信息:

image-20221006143036466

image-20221006143221338

分析该区块的两个交易,第二个交易每次额度都是0.00001BTC,总共进行了5569次,这种价格极小数量极多的交易类似于对服务器进行了DDOS攻击,区块链系统设计时没有考虑这种情况,这样的交易对服务器运行效率有较大影响

2)

image-20221006144249857

访问https://btc.com/stats/diff ,可以看到

  • 难度调整间隔是4天3小时
  • 难度变化趋势整体上升,带来的影响是计算区块越来越困难,需要消耗更多算力
  • 平均算力计算:难度除以平均出块时间

3)

调用API:

PS C:\Users\lenovo> curl https://blockstream.info/api/mempool

image-20221006221847935

a. 分析content中内容,待验证的交易数目为4246个,数据量为1452042,大约1452042/1024/1024=1.4个区块可以处理

**b.**高度在9991-10000 间区块内包含的总交易数目为10个

image-20221006145513745

实验2

OP_3DUP OP_ADD OP_PUSHNUM_9 OP_EQUALVERIFY OP_ADD OP_PUSHNUM_7 OP_EQUALVERIFY OP_ADD OP_PUSHNUM_8 OP_EQUALVERIFY OP_PUSHNUM_1

  • 首先栈中有x,y,z,OP_3DUP复制栈,栈中元素变更为x,y,z,x,y,z
  • OP_ADD,栈中前两个元素相加,栈顶变更为y+z
  • OP_PUSHNUM_9 OP_EQUALVERIFY ,栈中放入9,比较y+z9,若要成功解锁需满足y+z=9.
  • 之后步骤类似,依次得到解锁条件z+x=7,x+y=8
  • 解方程得到x=3,y=5,z=4

解锁脚本为:

OP_PUSHNUM_3 OP_PUSHNUM_5 OP_PUSHNUM_4

脚本转化工具

image-20221006162448009

最终命令为

OP_PUSHNUM_3 OP_PUSHNUM_5 OP_PUSHNUM_4 OP_PUSHBYTES 6f938893889388

实验3

区块详细

image-20221006154653366

探究ERC代币合约

image-20221006154756041

在 events 一栏,可以看到该合约最近的状态变动,触发改动的事务地址以及事务所 调用的具体方法:

image-20221006154926979

点击具体的事务地址可以获得关于该次状态变动更加详细的信息。

image-20221006155005580

智能合约定义为一段部署在evm虚拟机中的代码,无法自动执行,需要人为的触发才能执行,每执行一次需要发起这次执行的账户扣除对应的gas作为手续费, 智能合约与平时的代码的主要区别就是运行在一个以太坊这样的分布式平台上。

实验4

正则匹配相应要求

image-20221006160215140

实验5

脑钱包

image-20221006160529588

纸钱包

image-20221006160616389

普通钱包

image-20221006160741065

拓展实验3:藏头诗

要实现示例的样子在于两点

  • vanitygen.exe的正则表达式生成指定内容的地址
  • 定位每行输入的位置, 下次位置加一

使用python实现,实现代码为:

import os
import re
target = 'experience'
for i, c in enumerate(target):
pattern = '^.{%d}%c.*$' % (i + 1, c)
p = os.popen('.\\vanitygen.exe -r "%s"' % (pattern))
res = re.search(r'Address: (.*)', p.read())
print(res[1])

效果:

image-20221006222812420