首页 > 其他分享 >区块链浏览器&常见的区块链钱包

区块链浏览器&常见的区块链钱包

时间:2024-01-20 20:44:07浏览次数:32  
标签:浏览器 比特 地址 钱包 实验 区块 OP

区块链浏览器&常见的区块链钱包

实验概述

  区块链技术的重要特点之一是具有数据不可篡改性。而在其所构筑的公链应用(如数字货币、智能合约)中,良好的数据透明性使得经过区块链接收确认的所有数据变得公开可验证,这也是区块链技术无需信任的决定性因素。区块链浏览器,作为区块链项目的关键基础设施,能够帮助大众在无需运行任何专用软件的情况下,对实时的区块链状态进行解析,获取其感兴趣的部分数据,也是学习区块链技术最为直观便捷的工具。
  本实验一方面以比特币和以太坊的区块链浏览器为例,首先介绍获取区块链数据的基本技巧;进而利用区块链浏览器解析并学习区块链账本层与合约层的构造,结合多个典型事务,加深学生对于多种区块链状态的认知与体会;对批量获取区块链数据进行数据挖掘的相关技巧进行点拨,该实验也是后续所有区块链实践的必备积淀。另一方面,针对于存储私钥的应用——区块链钱包,本实验旨在让学生掌握主流货币系统生成密钥和地址、签发交易的基本方法,以及掌握区块链钱包的基本分类,了解并体验不同类型的区块链钱包,并针对学有余力的同学组队展开进阶实验。

实验 4-1:区块链浏览器的基本操作与功能

1)请在区块链浏览器中查询区块
000000000000000003dd2fdbb484d6d9c349d644d8bbb3cbfa5e67f639a465fe 并对该区块进行分析,该区块有何异常,造成该异常的原因是什么,这可能体现了区块链系统设计中的哪些问题?
2)观察浏览器对于比特币挖矿难度变化的可视化实时结果
https://btc.com/stats/diff ,尝试回答:难度调整的间隔;难度变化的趋势和其带来的影响;推测平均算力的计算方法。
3)参考 blockstream API 的调用说明:
https://github.com/Blockstream/esplora/blob/master/API.md,调用 API 回答以下问题:
a.当前比特币待验证的交易数目为多少?数据量为多大?大概几个区块才能处理完这些交易?
b. 给出高度在 9991-10000 间区块内包含的总交易数目。

实验流程

  • 打开区块链浏览器https://blockstream.info,输入区块地址000000000000000003dd2fdbb484d6d9c349d644d8bbb3cbfa5e67f639a465fe即可进行查询和分析。
  • 打开https://btc.com/stats/diff ,观察浏览器对于比特币挖矿难度变化的可视化实时结果,分析和推测难度调整的间隔,难度变化的趋势和其带来的影响,推测平均算力的计算方法。
  • 参考blockstream API的调用说明,分析当前比特币待验证的交易数目、数据量等;查看高度在特定区间内区块内包含的总交易数目。

实验结果截图

1)image

图1 区块000000000000000003dd2fdbb484d6d9c349d644d8bbb3cbfa5e67f639a465fe信息

image

图2 区块000000000000000003dd2fdbb484d6d9c349d644d8bbb3cbfa5e67f639a465fe交易信息

2)

image

图3 比特币挖矿难度可视化查询

3)

image

图4 内存池积压统计信息

image

图5 高度在9991-10000间的区块信息

思考题回答

1)查询区块000000000000000003dd2fdbb484d6d9c349d644d8bbb3cbfa5e67f639a465fe的交易信息,由图2可知可以看到该区块记录了两场交易,第一场交易是Coinbase类型的,是向1KFHE7w8BhaENAswwryaoccDb6qcT6DbYY支付25BTC的矿工费;第二场交易是5569个地址分别向1KFHE7w8BhaENAswwryaoccDb6qcT6DbYY转账0.00001BTC,总计0.05569BTC。

在第二场交易中,每次交易金额均为小额支付且数量非常多,且交易对象都是同一人,而支付方则有很多,算是支付方对服务器发动了一个DDOS攻击,导致目标地址需要对5569项交易都进行验证,在短时间内无法处理其他交易。

可以看到区块链系统设计中对于这种单词交易金额极少但数量庞大的垃圾订单考虑不足,极其影响服务器的运行。

2)查阅资料得知,比特币系统每2016个区块调整一次挖矿难度系数,每个区块的产生时间大约是10分钟,因此大约每14天调整一次比特币挖矿难度。

难度变化的趋势:难度整体在上升,中间略有波动。

带来的影响:使得计算区块的难度越来越大。

平均算力的计算方法:用当前难度除以平均出块时间。

3)a.由图4可知,当前比特币的交易数目为28729,数据量为69415714,大约\(69415714/2^{20}≈67\)个区块可以处理完这些交易。

b.由图5可知高度在9991-10000间区块内包含的总交易数目为10.

实验 4-2:利用区块链浏览器学习区块链账本层构造

观察 P2SH 交易的赎回脚本:
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
参考 https://en.bitcoin.it/wiki/Script
说明该脚本规定的解锁条件和运行机理,并拟写其解锁脚本。

实验流程

参考P2SH交易的脚本规则,说明脚本规定的解锁条件和运行机理,并拟写解锁脚本。

思考题解答

上述赎回脚本的含义是:假设原先栈内有三个数,先将三个数进行复制后置于栈顶,然后将栈顶两数进行相加,再将数字9压入栈内,判断新栈顶两数是否相等,若不等则返回fail,否则将栈顶两数字清除,然后将新栈顶的两数相加并替换原来的两数字进入栈内。之后再将数字7和数字8压入栈内同理。最后若栈顶两数字相等,则将数字1压入栈内,表示解锁成功。

假设原先栈内的三个数分别为\(x、y、z\),根据上述分析可以列出方程组

\[\begin{cases} y+z=9\\z+x=7\\x+y=8 \end{cases} \]

可以得到\(x=3,y=5,z=4\)

将得到的解依次按顺序入栈,再读入赎回脚本的hex编码即可得到解锁脚本。

查看赎回脚本对应的十六进制串:

image

图6 赎回脚本对应的十六进制串

原先赎回脚本的字节数为7,故解锁脚本为OP_PUSHNUM3 OP_PUSHNUM_4 OP_PUSHNUM_5 OP_PUSHDATA1 07 6f938893889388

实验 4-3:利用区块链浏览器解析并学习区块链合约层构造

实验流程

  • 点击任意区块的详情,以 https://etherscan.io/block/8413441 为例,观察合约层部署带来的不同。
  • 以著名的 ERC 代币合约为例探究合约和其触发事务的状态。

实验结果截图

image

图7 https://etherscan.io/block/8413441界面

image

图8 代币的价值以及合约定义的所有方法

image

图9 events一栏

image

图10 查看具体事务地址

思考题解答

学习总结:在智能合约中,区块的大小不再有固定上限,而是由事务费用上线Gaslimit所决定,事务费用则直接与矿工所执行合约的总复杂度相关联。智能合约可以看作是一段写在区块链上的代码,一但某个事件触发合约中的条款,代码将自动执行,每一笔触发合约状态变动的事务在执行时都会扣除一定的执行费用,如果附加的 Gas 因不足被耗尽,则该次执行不会造成区块状态变动,且不会退回所消耗的费用。智能合约具有很多的优势,可以降低生态丧失去中心性的风险,避免免庞大的计算开销以及恶意合约的影响;可以保证透明公平,智能合约会用代码将条件写得清清楚楚并记录在区块链上,整个过程由程序执行,包括编写这个代码的开发者都不能篡改,可以很好地解决传统合约中的信任问题。

实验 4-4:体验比特币靓号地址

查阅相关资料,尝试生成满足以下条件的地址:
包含"ccc"的地址;
以 11 开头且以 77 结尾的地址;
以 3 个数字结尾的地址;
以 3 个数字再接"88"结尾的地址。

实验流程

打开 cmd,直接将 vanitygen.exe 的图标拖拽进 cmd 的小黑窗里打开,然后分别生成满足以下条件的地址:

  • 包含"ccc"的地址;

  • 以 11 开头且以 77 结尾的地址;

  • 以 3 个数字结尾的地址;

  • 以 3 个数字再接"88"结尾的地址。

实验结果截图

(1)指令:-r ccc

地址:1MGe8XqFuDkCgTXDYUwjHnmxsAonWaVccc
image

图11 包含"ccc"的地址

(2)指令:-r ^11.*77$

地址:115jc9NQcTPGMH6aiJkgaJzqJrRrMwVf77
image

图12 以11开头且以77结尾的地址
(3)指令:-r \d{3}$

地址:12XvFGGzLTBfRe9889kMivFyHJwC6Jj671
image

图13 以3个数字结尾的地址

(4)指令:-r \d{3}88$

地址:1EPtFGeBxw1B5tmMHPPnpXxSLvQx58588
image

图14 以3个数字再接"88"结尾的地址

实验 4-5:体验在线生成不同种类的钱包地址

打开实验提供的 html 文件,选择“简体中文”模式,体验各类钱包地址的生成(任选三种方式)。

实验流程

打开实验提供的 html 文件,选择“简体中文”模式,体验各类钱包地址的生成。

实验结果截图&思考题解答

image

图15 普通钱包

image

图16 纸钱包

image

图17 虚荣钱包

拓展实验 4-8藏头诗

实验流程

使用批处理的方式,通过 vanitygen 工具生成一首斜向藏头诗。

实验结果截图

image

图18 斜向藏头诗生成
image-20231016195536723
图19 包含"experiment"的斜向藏头诗

实验4-8:藏头诗

在实验 4-4 中,我们使用 vanitygen 工具生成了很多比特币的靓号地址,现在我们
想要实现一首藏在很多比特币地址中的藏头诗,示例如下:
1 e L u s E 4 j b T M V o w p Z D 9 C 7 z L 2 o b X E v N p X B n d
1 9 x 8 n M x M t S B x B 5 f L k 3 t T n P f p d U K 6 4 9 s D y H "
1 N P p X x j n P H 9 D v h j U j A c J G h y y 4 E J Q n g M b p H
1 4 r e v e k 3 J p C 1 P F r r m s G G R c 5 P d C G S 1 4 Y g h y
1 K y s 8 4 r X X a r 2 8 D P 5 6 Y V 1 3 R U y n d L S x u A v 9 w
1 P h n J 3 t i k w L o v T 1 k n v A L E c 1 t 3 A 7 f A B o Q X u
1 8 T p z 7 N D m Z K d 5 A R P J Z g 1 7 P Y j z R i t 3 s E T C c
1 F 9 L z n R Q V e y a u a 3 f 4 8 M a B P J 9 E T d U W g Q 1 6
1 N n m 2 d R 9 v h n f 4 k w R k 8 D 5 3 S F M L P p 7 x e U 2 a G
1 6 E b 3 S p B y 5 P t t t N e 7 d F G V U g i J g g Z r c S 5 s V
请使用批处理的方式,通过 vanitygen 工具生成一首类似于示例的斜向藏头诗。

采用批处理方式,使得想要隐藏的字符串的第\(i\)位位于藏头诗第\(i\)行的第\(i+1\)个位置。

代码如下:

import os

words = input()
for i, c in enumerate(words):
    pattern = "^\w{%d}%c" % (i + 1, c)
    f = os.popen('vanitygen.exe -r "%s"' % pattern)
    data = f.readlines()
    addr = data[3][8:-1]
    print(addr)

标签:浏览器,比特,地址,钱包,实验,区块,OP
From: https://www.cnblogs.com/Silverplan/p/17977105

相关文章

  • Python实战:selenium模拟浏览器运行,获取软科网站2023中国大学排名
    Python实战:selenium模拟浏览器运行,获取软科网站2023中国大学排名在爬取一些加密的网页时,可以使用selenium模拟浏览器运行,再从网页中提取想要的数据。使用的库本文使用到的Python库有:selenium、bs4、pandas使用selenium解决网页的反爬使用bs4对html网页进行解析和提取数据......
  • 使用Go语言构造区块链
    使用Go语言构造区块链实验概述21世纪最具先峰性的代表性技术之一,就是区块链。目前,它仍然处于,并将长期处于不断成长的时期,而且,在他的身上,还有很多潜在的力量,没有完全展露出来。从本质上来讲,区块链的核心,可以说是一个分布式数据库而已。不过,在区块链中,与传统的分布式数据库,最为独......
  • pythonUI自动化之selenium获取浏览器接口信息
    #导入Selenium库中的Chrome驱动和DesiredCapabilities类fromselenium.webdriverimportChrome,DesiredCapabilities#导入Chrome驱动的特定选项类fromselenium.webdriver.chrome.optionsimportOptions#这是主程序的入口点,只有当该文件被直接运行时,以下的......
  • 【浏览器扩展】编写Firefox和Chrome的扩展程序
    官方文档Firefox(1)文档https://developer.mozilla.org/zh-CN/docs/Mozilla/Add-ons/WebExtensions(2)文档示例代码https://github.com/mdn/webextensions-examplesChrome(1)文档https://developer.chrome.com/docs/extensions(2)文档示例代码https://github.com/Google......
  • 区块链挖矿实验
    一、实验目的了解区块链挖矿原理及过程。二、实验器材pycharm+python3.11三、实验内容实验要求:在前面已经配置好的实验环境和实验三编写的单向散列函数实现程序的基础给程序添加计时功能,进行下列实验:(1)找一个文件M,将文件中的汉字和标点符号用区位码代替生成一个数字字符串,如果......
  • python使用selenium操作浏览器的教程
    重复的操作令手工测试苦不堪言,于是自动化测试出现了!作为web应用里最出名的自动化测试工具,selenium让web应用的测试轻松了很多。今天我们就来简单的介绍一下一些简单的selenium浏览器操作。接下来我们就来看看python怎么操作浏览器的吧!1、打开指定的网页地址我们使用selenium进行自......
  • chrome浏览器闪屏问题解决
    描述:我在浏览B站时,在打字时突然出现了闪屏,反应很强烈!一输入就出现!我还一直以为是电脑显卡出了问题!后来查询资料发现这是谷歌很久以前的一个bug,至今都没有修复!至少在我发帖之前一直是没有解决的!开启硬件加速若想使用硬件加速,可以在网址栏输入:chrome://flags/选择ChooseANGL......
  • 无边框 自定义 wfp 钱包夹
    无边框自定义wfp钱包夹C#.net4.8wpfSqlServer2012消息队列Redis  银柱网-李银柱个人博客http://www.liyinzhu.com......
  • 在VS Code中启动Edge浏览器调试Vue项目
    最近维护一个Vue2.x的老项目,网上的资料介绍在VS中调试前端代码都是使用Chrome浏览器,但我没有装Chrome浏览器,想在VSCode中直接调试Vue代码,百度了很多资料,尝试了好几种方案,终于找到简单可行的方法。根据微软官方的资料,如果想在VSCode中使用Edge浏览器进行调试,可以安装Microsoft......
  • 14、nginx设置浏览器缓存
    1.设置expire头浏览器缓存可以通过expires指令输出Header头来实现,expires指令的语法如下:语法:expires[time|epoch|max|off]默认值:expiresoff作用域:http、server、location用途:使用本指令可以控制HTTP应答中的Expires和Cache-Control的Header头信息(起到......