直接做成 github 的 page 了。
1
darmau 2019-01-07 16:46:53 +08:00 via iPhone 2
我曾经也是笃信不疑,区块链不可修改,牛逼
没想到人家直接分叉 |
3
Martox 2019-01-07 17:30:48 +08:00
其实没看懂耶
|
4
darmau 2019-01-07 17:33:28 +08:00
@cr4fun 就这样还想打败法币呢?一般人持有“货币”图的是什么,不就是个稳定吗?不然为啥都用美元。如果一个持有比特币的人只是想老老实实的拿着当货币用,结果一言不合就分叉,站错方向就成废代码。所以就老实承认了吧,币圈为啥不反对分叉?因为他们没想着要让虚拟币变成货币,他们就想翻几百倍,然后换成法币。
|
7
Sweden 2019-01-07 17:42:41 +08:00 via Android
|
9
newtype0092 2019-01-07 17:46:06 +08:00
确实挺直观啊,就是把所有数据串起来,每一个都在前一个的基础上做 hash。
这样每次校验都要从串的根部开始遍历一遍? |
12
maichael 2019-01-07 18:01:30 +08:00
@SuperMild #10 这个例子其实和可能性没什么关系。指的是就算对于法币而言,只要出现两波人有分歧,一波人认,一波人不认,那也会有“分叉”的问题,不是数字货币独有的。
|
13
imshf 2019-01-07 18:02:28 +08:00
看到一个 bug ?
|
15
darmau 2019-01-07 18:15:37 +08:00 via iPhone
@maichael 法币发生了分歧,比如委内瑞拉,也不是直接印新币解决的,人们会要美元,要黄金。因为直接印钱并没有解决问题。而分叉很容易就能发生
|
16
SeaRecluse 2019-01-07 18:16:49 +08:00
@maichael 高中政治没好好写吧 XD
|
17
SuperMild 2019-01-07 18:47:05 +08:00
|
18
Antidictator 2019-01-07 18:52:15 +08:00 via iPhone
@imshf 我怎么觉得是你浏览器自动翻译了😂
|
19
jadec0der 2019-01-07 19:33:01 +08:00 1
|
21
geelaw 2019-01-07 20:06:28 +08:00 via iPhone
@jadec0der #13 虽然我个人并不是区块链爱好者,但是你没意识到 git commits 是区块链吗?
|
23
dreamwar 2019-01-07 20:31:10 +08:00
决定货币价值的是信用背书
决定美元价值的是美国 决定比特币价值的是数学 |
24
jadec0der 2019-01-07 20:47:19 +08:00 2
@geelaw 当然,从数据结构的角度来讲,git 就是 chain of blocks。blockchain 也没有比 git 更多的东西。如果只是需要一个分布式的 append-only 账本,它很早就开发好了,而且免费。
但是区块链拥趸并不承认这一点,他们坚持 blockchain 并不只是一个数据结构,blockchain 需要共识算法,blockchain 有超过这十个字母的更多内涵。所以我认为 lz 在开发这个玩意儿的时候并不想承认他用的 git 早就实现了他需要的所有功能。 git 是不是 blockchain 是一个老问题,你 Google 一下就能看到很多讨论,而据我的观察,"blockchain 专家"都在否认 git 是 blockchain 这个论点,因为这个论点让集资几十亿买个区块链显得很滑稽。 |
28
felixlong 2019-01-07 22:09:17 +08:00
@dreamwar 谁告诉你 决定比特币价值的是数学? 决定比特币价值的是那群来玩比特币的那群人。 我们这些没有比特币的人干嘛要来加进来被割韭菜?
|
29
bullfrog 2019-01-07 22:20:16 +08:00 1
把 pre_hash 也改了不就行了。。
不能篡改不是区块链的特性,是分布式的特性。。 |
30
KgM4gLtF0shViDH3 2019-01-07 22:25:50 +08:00 via iPhone
反正那些奶粉机油什么的溯源我是不信的,直接
返回一个正品的页面,后面的逻辑你也不知道 |
31
loading 2019-01-07 22:44:36 +08:00 via Android
那些所谓溯源的,是不能改,但是他们用的是自己官方控制的链,写的就是假东西。
|
33
cr4fun OP @jadec0der 我写的这个例子,只是直观感受一下改变数据后,链式结构就断了呀,因为首尾相接的两个 hash 值对不上了。至于你说的 git,它明显是一个可追溯的 fork 系统,所以我认为大部分商业用的追溯系统用 git 比区块链更实用。
这个就是我写的例子: https://github.com/trackwithgit/demo/commits/master/lamp.md |
34
jadec0der 2019-01-08 11:52:42 +08:00
@dreamwar 「还是那个点,数据库可以直接被篡改」还是不懂,能否展开讲讲?
比如现在你有个 git 库里面的 commits 是 A-B-C,我用 git clone 把它们都复制到了本地。如果你要偷偷篡改 B commit,让我下次 git pull 的时候把本地的 B commit 也改掉,你要怎么做呢? |
35
binux 2019-01-08 13:37:22 +08:00 via Android
@jadec0der 按照你这个复制到了本地的说法,你就算用记事本,别人偷偷篡改,你下次再下载的时候不是一样能发现
|
36
jadec0der 2019-01-08 14:39:47 +08:00
@binux 文本文件不是 append-only 的。对 git 来说,只有在把改动在后续 commit 中提交才是合法修改,直接改前面 commit 中的内容是非法修改。文本文件没有这种区分。
除非你把 txt 当账本用,规定前面的不能改,每次下载新文件的时候扫描前面的每一行比较,再额外维护个 UTXO 表。那你确实可以用文本文件防篡改。 |
37
dreamwar 2019-01-08 14:46:34 +08:00
@jadec0der #36 没关系啊,线上数据库都已经篡改过了,又没有别人复制,1:99。
“所以有问题的是你手里那份数据,请以线上为准。” 除非,你让超过 51%的 git 用户都复制一份(这就是区块链了) |
39
jadec0der 2019-01-08 15:38:59 +08:00
@binux Bitcoin 现在三亿七千万条交易,每十分钟更新一次,扫描每一行又如何? O(n) 和 O(1) 在你看来没区别?
|
42
dreamwar 2019-01-08 18:29:03 +08:00
@jadec0der #40 区块链上数据的正确与否取决于大部分人的认同,不认同的就分叉,你自己电脑里面存一份文件有个 P 用?
|
43
dreamwar 2019-01-08 18:31:08 +08:00
@jadec0der #40 按照你的说法,git 如果就是区块链,那你告诉我大部分人认同的是线上的数据,还是你手里的那份数据,你在跟我说什么 P 话?
|
45
jadec0der 2019-01-09 11:37:08 +08:00
@binux 不,防篡改这个目标,防止的就是篡改本地数据,这是前提,不是条件。要么你在本地有摘要,要么有公钥验证,在本地没有知识的情况下是没有防篡改可谈的。
如果说防篡改有什么必要条件的话,append-only 的账本式数据结构才是。 |
46
binux 2019-01-09 11:53:20 +08:00
@jadec0der 我看不出 git 怎么能防止篡改你本地的数据,你在本地有完整数据不比你有摘要要强?
你要求 append-only 是因为你对篡改的定义是只能 append,但是可以有其他“篡改”的定义。 |
47
jadec0der 2019-01-09 12:09:34 +08:00
@binux 那要看你对篡改和修改怎么定义了。
我的想法是,如果你在数据库里定义一个余额,那有权限的人可以直接改掉这个余额,日志被删除之后就不知道这个余额是怎么改出来的了,这个叫篡改。 如果你的余额是记录在 git 或者 blockchain 上的,那无论谁改了,这个改动都会被保存下来,可以追溯,那就谈不上「篡」。 |
48
binux 2019-01-09 12:24:02 +08:00
@jadec0der #46 你在数据库里有一个余额,我在我数据库里面也有一个余额。如果我两同意,我的余额-100,你的余额+100,然后我们在我们的数据库里面都修改一下。假如你偷偷改掉了,那么我两的数据就不一致了,这就发生了分叉(只要引入第 3456 个人,少数服从多处就行了)。不需要 append-only 不需要摘要不需要 git 不需要 blockchain。
相反即使你的余额是记录在 git 或者 blockchain 上的,而只有你有这个 git 或者 blockchain,我没有,你还不是想改就改,大不了摘要一起改不就完了。 可见 git 或者 blockchain 和防篡改没有关系,防篡改来源于我们都有这个数据。 |
49
jadec0der 2019-01-09 13:21:37 +08:00
@binux well,你的「都修改一下」是需要双方验证的,所以你的修改建立在同意的前提上,除了数据同步还有业务逻辑,目标是让每次修改都是合法修改。当然这没问题,传统的系统都是这么运行的。
而 append-only 的系统在同步数据的时候可以不验证,直接同步。因为用户有所有的变更记录,所以他不担心某次修改里有非法的修改。 举个例子,你用 git 管理代码,每次都是 git pull 直接拉的,发现问题你才去找哪个 commit 出问题了。如果 git 不是 append-only 的,只保存所有文件当前的状态,你就得在 pull 之前 review 别人的变更有没有问题。 |
52
binux 2019-01-09 14:44:47 +08:00
@jadec0der #50 对比数据库也不需要做「业务逻辑」的验证啊,你按字节验证不就完了。而且如果你要用 git 做账单,你还是要做「业务逻辑」的验证,不然你要怎么发现 bill 大于余额,推迟验证还是验证呀。
|
53
h1159711040 2019-06-20 15:17:13 +08:00
不是说区块链不是不可篡改而是很难篡改吗?
|