区块链--大白话说明

做开发的听过区块链,搞金融的也听过区块链。好像互联网金融峰会上不说区块链技术就不是这行的。包括BAT、各大银行、金融机构都开始做自己的区块链工作。
由于自己的工作会接触到区块链,所以自己也开始一点点去学习区块链,把自己学习到的会整理出来,供大家一起交流探讨,不足之处还请指正。
那区块链到底是什么?本片文章将以大白话,通俗易懂的来讲解什么是区块链技术。


先来举一个生活中的例子
假设有一个人告诉你,大街上出现了一只老虎,你会不会相信?
用春晚小品一句话,只要你走一走脑子,肯定会说,大街上怎么可能会出现老虎!
接下来,重来一遍。
假设有一群人告诉你,大街上出现了一只老虎,你会不会相信?
估计这回走完脑子,你会觉得很多人都这么说,那估计是真的!
最后,再来一遍。
如果是你家人,或者是你最信任的人告诉你,大街上出现了一只老虎,你会不会相信?
这次你不过脑子估计都会信!


很好。有没有考虑过为什么会出现这样的情况。
因为“信任”。这就是信任的力量,你不会去信任一个没有足够信用度的单独个体,但是你会信任一堆个体或者一个足够有信任的单独个体。
在现实生活中,银行就好比是这个有足够信用度的个体。

比方你是出借人,要借给借款人,银行会在中间起到一个证明你借给他的证明,会说:放心,有我在。

再打个比方
你是淘宝买家,你给卖家付款了,为什么不会担心不发货?因为有支付宝在中间起到监管作用。


但这样会有一个问题
以银行等作为信用中介是需要成本的,而我们普通老百姓就要为这些信用成本买单。
所以才会造就金融业是最赚钱的行业。

那有什么方法可以取消或降低这种信用成本呢?
要去除银行类等中心机构的信用背书?

那就可以用我们上面提到过的“一群个体”,这也是区块链技术的核心。

当没有银行、支付宝这种足够有信用的单独个体时,出借人借给借款人时,肯定不放心。
但当那一群个体作为“正义联盟”出来作证时,出借人就不会再担心了。


区块链本质上是解决信任问题、降低信任成本的技术方案。
目的就是为了去中心化,去信用中介。
区块链是比特币的底层技术。


又有人问了,什么是比特币?
比特币(BitCoin)的概念最初由中本聪在2009年提出,你把它理解成数字货币即可。也是区块链应用的实例。
我们以比特币交易为例来看看区块链具体是如何操作的。

1.把每笔交易在全网广播。让全网承认有效,必须广播给每个节点。
出借人借给借款人,向所有人“广播”快来看啊,我们在交易啊!
此时,那一群人就会说,我们都知道啦。而他们就是节点,外号叫做矿工。

2.矿工节点接收到交易信息后,都要拿出账簿本记载该次交易。
而且一旦记录,就不可撤销,不能随意销毁。
矿工节点是通过电脑运行的比特币软件对交易的进行确认的。

这时就会又有一个问题?
为什么那一群人要做矿工?为了鼓励矿工的服务,对于其所记录和确认的交易,
系统为矿工提供25个比特币作为奖励。(这个奖励数量,系统设定每4年减半)

那有人会说,假设一个交易两个人都记录了,那算谁的?开始很简单,谁记得快算谁的。
若要是一样快呢?为了减少这种情况,系统会出一道十分钟的运算题,谁能最快解出值,谁就将获得记录入账权利,并赢得奖励。

那这个运算题是什么?
区块链中所运用算法并不是简单的计算题,而是使用哈希散列(Hash)算法。
这里用哈希散列是因为:哈希散列是密码学里的经典技术,可以用来验证有没有人篡改数据内容。

3.获得记账权的矿工将向全网广播该笔交易,账簿公开,其他矿工将核对确认这些账目。交易达到6个确认以上就成功记录在案了。
并且:
矿工记录的时候,还会将该笔交易盖上时间戳,形成一个完整时间链

4.当其它矿工对账簿记录都确认无误后,该记录就确认合法,矿工们就进入了下一轮记账权争夺战。

此时,以比特币交易为例来看区块链是如何操作的流程算是结束了。
有人会说,说了半天也看不出区块链啊?


矿工的每个记录,就是一个区块(block),会盖上时间戳,每个新产生的区块严格按照时间线形顺序推进,形成不可逆的链条(chain),所以叫做区块链(Blockchain)。
而且每个区块都含有其上一个区块的哈希值,确保区块按照时间顺序连接的同时没有被篡改。
在这里插入图片描述
这时候我们再看对区块链的原始定义就能理解了:
区块链是一种分布式数据库,是一串使用密码学方法相关联产生的数据块,每个数据块都包含了一次网络交易信息,用于验证其信息的有效性和生成下一个区块。

此时又有人会提出问题了(哪那么多问题emmm)
若两个人同时上传,虽然这个概率很小,但是若发生,我们就看最后的区块链哪条更长,短的那条就失效。这就是区块链中的“双花问题”(同一笔钱花两次)。对于要制作虚假交易,除非你说服了全网里超过51%的矿工都更改某一笔账目,否则你的篡改都是无效的。

网络中参与人数越多,实现造假可能性越低。
这也是集体维护和监督的优越性,伪造成本最大化。
说服51%的人造假还是灰常灰常难的。


总结下到底区块链是什么?

1.去中心化
就是撤销采用银行监管这种要老百姓去付“信用费”的方法。
这是区块链颠覆性特点,不存在任何中心机构和中心服务器,所有交易都发生在每个人电脑或手机上安装的客户端应用程序中。
实现点对点直接交互,既节约资源,使交易自主化、简易化,又排除被中心化代理控制的风险。

2.开放性
区块链可以理解为一种公共记账的技术方案,系统是完全开放透明的,账簿对所有人公开,实现数据共享,任何人都可以查账。

3.不可撤销、不可篡改和加密安全性
区块链采取单向哈希算法,每个新产生的区块严格按照时间线形顺序推进,时间的不可逆性、不可撤销导致任何试图入侵篡改区块链内数据信息的行为易被追溯,导致被其他节点的排斥,造假成本极高,从而可以限制相关不法行为。


以后会不定期,将自己学习的区块链技术整理出来。错误之处还请指出。
祝大家头发多多,bug少少。

<think>嗯,用户问的是HTML中的data-trace属性的作用和用法。首先,我得回忆一下HTML中的自定义数据属性相关知识。记得HTML5引入了data-*属性,允许开发者自定义属性来存储数据,这些数据不会影响页面布局,但可以通过JavaScript访问和操作。 用户提到的data-trace可能属于这类自定义属性。我需要确认data-trace的具体用途,可能用于追踪或记录某些信息,比如日志、用户行为分析等。比如,前端框架或监控工具可能会用这个属性来标记元素,方便跟踪事件或错误来源。 接下来要解释data-trace的使用方法。应该给出一个例子,比如在HTML元素中添加data-trace="some-value",然后通过JavaScript的dataset属性来获取这个值。还要说明属性名的转换规则,比如data-trace-id对应dataset.traceId。 另外,需要提到相关的引用,看看用户提供的参考中有没有相关内容。引用[1]提到了traceId,可能和日志追踪相关,可能data-trace用于传递跟踪ID。引用[3]中的Trace32调试工具也有追踪相关的上下文,可能类似。不过这些引用主要是关于后端或调试的,但可以联系起来说明data-trace在前端的类似用途。 还要注意用户可能的应用场景,比如埋点监控、性能分析,或者与后端日志系统集成,传递跟踪ID以便前后端链路追踪。需要举例说明,比如在按钮点击事件中记录追踪信息,或者与日志系统结合使用。 可能用户的实际需求是希望在HTML元素中添加追踪信息,方便调试或分析用户行为。需要确保解释清楚如何设置和获取这个属性,以及它的实际应用案例。 最后,生成相关问题时要围绕data-*属性的其他用途、性能影响、与后端集成的方法等,帮助用户进一步了解相关知识。</think>### HTML `data-trace` 属性的作用及用法 #### 1. **基本含义** `data-trace` 是 HTML5 中自定义数据属性(`data-*`)的一种,用于在 HTML 元素中存储与页面逻辑相关的追踪信息(如日志标记、调试标识等)。这类属性不会影响页面渲染,但可通过 JavaScript 或 CSS 访问,常用于埋点监控、用户行为分析或调试场景[^1][^3]。 #### 2. **使用方法** - **定义属性**:直接在 HTML 标签中添加 `data-trace`,值为任意字符串。 ```html <button data-trace="user-click-login">登录</button> <div data-trace="page-section-1">内容区域</div> ``` - **JavaScript 访问**:通过 `dataset` 属性读取值。 ```javascript const button = document.querySelector('button'); console.log(button.dataset.trace); // 输出 "user-click-login" ``` - **CSS 关联**:结合属性选择器进行样式控制(需结合其他属性): ```css [data-trace="page-section-1"] { border: 1px solid #ccc; } ``` #### 3. **典型应用场景** - **埋点监控**:标记页面元素,记录用户点击或浏览行为。 ```html <a href="#" data-trace="download-button-2023">下载文件</a> ``` - **调试辅助**:为复杂组件添加唯一标识,方便开发时快速定位问题。 - **与日志系统集成**:传递追踪 ID(类似 `traceId`),实现前后端链路追踪。 #### 4. **命名规范与扩展** - 属性名可扩展为多级,例如 `data-trace-id="123"`,对应 JavaScript 中 `dataset.traceId`。 - 值可以是 JSON 字符串,存储结构化数据: ```html <div data-trace='{"id":"A1B2","type":"widget"}'></div> ``` #### 5. **注意事项** - 避免滥用:仅存储与页面逻辑直接相关的轻量数据。 - 兼容性:`dataset` 属性在 IE10 及以下不支持,需改用 `getAttribute('data-trace')`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值