作者DarkerDuck (达克鸭)
看板DigiCurrency
标题Re: [Coin] 铭文Token合约
时间Sun Dec 17 20:25:44 2023
很久没发技术文了,因为这波就是没什麽新技术啊,meme币整天博傻,动物园都快盖好了。
就算是最近被吹上天的BRC-20讲的好像BTC的Defi summer,
https://www.blocktempo.com/is-the-bitcoin-ecosystem-unable-to-replicate
但实际上类似的东西,
10年前的BTC在还未有ETH生态系就玩过了。
mastercoin可以玩代币,counterparty还可以玩智能合约咧。
BCH之前也早就玩过SLP token了,USDT甚至有在SLP上发行咧。
https://i.imgur.com/g9zbGoe.png
https://tether.to/en/transparency/#usdt
但这种代币玩法实际上就是劣化版的ERC-20,更不用谈什麽defi summer了。
既然原PO讲到了,就来讲一下技术上BRC-20与ERC-20上的不同。
ERC-20是由图灵完备的EVM所执行的程式语言代币标准,EVM是由矿工执行与验证的。
所以ERC-20上的mint, transferFrom等方法当然都是
由矿工执行与验证的。
而且因为最新的state都是已经和智能合约储存在区块链上了。
所以所有的代币参与者都可以从区块链上取得最新的"
共识"。
整个交易安全都是由区块链确保的,因为矿工已经帮忙验证过了,所以不用重新验证。
更重要的因为是由EVM所执行的,所以自订化程度很高,也可以和後续的DeFi相容。
像是DEX交易,staking,AMM等DeFi玩法,要更详细的资讯可以看下面文章。
https://www.toptal.com/ethereum/create-erc20-token-tutorial
而BTC并不支援图零完备智能合约,
所以从以前到现在的玩法就是把
BTC的区块链当作资料库使用。
以前用OP_return可以在BTC上写入额外的资料,
不过Luke等开发者不想让BTC太好用就限缩了OP_return的使用,免得spam attack
https://www.panewslab.com/zh_hk/sqarticledetails/4nl41tx7aw2u.html
https://i.imgur.com/pwzLSUN.png
直到Bitcoin Core用万能的soft-fork完成了taproot升级。
被人发现taproot有bug,不~~是feature。可以用taproot程式码绕过交易大小限制。
可以把整个区块用taproot交易的程式码区段塞满满,当然也就可以塞资料进去
https://web3plus.bnext.com.tw/article/271?
https://i.imgur.com/WronFGn.png
这种方式就是ordinal协议,可以在区块链上附加任何资讯,既然可以加上图片。
那当然也可以也可以附加纯文字档。
就有人想到程式语言的通用资料格式
json用来附加交易资讯。这时BRC-20就诞生了。
https://domo-2.gitbook.io/brc-20-experiment/
https://i.imgur.com/KWsUieG.png
譬如创建一个BRC-20代币ORDI就是上面那个json指令。把各个栏位定义好就行。
https://i.imgur.com/rFibDxB.png
其他的操作也是简单到有点简陋了。
https://i.imgur.com/yEw1kYd.png
https://i.imgur.com/owNLKej.png
比较特别的就transfer是直接用UTXO机制,ordinal的UTXO跑到哪边就是谁的,
所以只需要填数量就好。
那为什麽说这其实是劣化版的ERC-20呢?
因为上面的这些操作指令"
矿工不验证",所以其实可以乱写都没差。
譬如说我只有1 ORDI,但是我transfer写我传1000 ORDI都可以被"
矿工确认"。
所以就需要靠额外的
index server去"验证"那些BRC-20交易是"真的有效"。
这问题就导致了中心化index server的产生,
一般人只能去"
相信"这些index server是
诚实不作恶的。而非trustless。
就算server诚实,但这也会是安全性的single point of failure。
要入侵单一server比入侵整个区块链网路简单太多了。
https://twitter.com/0xmetazen/status/1723734111704244487
另外一个问题就是这些index server会变成整个系统的效能瓶颈。
这问题以前在BCH SLP上就发生过了,index server常常会overload或是离线。
那就不要只跑一个index server,去中心化跑很多个就好了啊~~~
然後你又会得到一个新问题,可怜啊~~
https://abmedia.io/asset-security-brc-20-version-discrepancy
https://abmedia.io/what-are-the-security-risks-from-inadequate-brc-20
这本身已经是劣化版的ERC-20在
劣化的区块链BTC上,问题只会更严重。
永恒牛市需要永恒mempool
https://jochen-hoenicke.de/queue/#BTC,24h,weight
https://i.imgur.com/EgTYcBV.png
然後就有这种玩法:
https://news.cnyes.com/news/id/5412431
https://twitter.com/evilcos/status/1735685957662441563
用低BTC手续费卡住mempool,涨价了就用tailTodd发明的RBF加速交易。
跌价了就ToTheMempool,等它自然被踢出mempool就好。
也难怪Luke把这东西当作bug,还写到CVE list里面了。
https://tinyurl.com/brjms38t
https://i.imgur.com/pwzLSUN.png
因为这种做法问题实际上很多。
所以BCH後来就用CashToken这种矿工验证的代币标准来取代SLP标准了。
回到正题,假如真的要用ETH智能合约写BRC-20这种玩法可以怎麽写呢?
首先当然就是摒弃ERC-20标准,因为ERC-20标准里的方法与资料结构都是矿工验证的。
我们只需要把区块链当作资料库使用就好。
下面就随便写一个把智能合约当作字串资料库的程式码,
没经过任何验证检查,只是要方便讲概念。
pragma solidity ^0.8.0;
contract LongStringArray {
string[] public strings;
function write(string memory newString) public {
strings.push(newString);
}
function read() public view returns (string[] memory) {
return strings;
}
}
有最简单write和read function可以读写这个字串资料库。
所以只要用write(newString)写入BRC-20标准的json字串进去理论上就可以使用了。
index server则是用read去读这个字串阵列资料库去验证交易并且得出所有余额。
不过BRC-20有些操作必须改一下,就是因为ETH等EVM链是account模式。
所以mint与transfer的操作必须加上地址栏位。
可以额外写这些function,
让合约操作者方便呼叫这些function就可以把这些json格式的指令写入到strings中。
後面就不写了,在EVM链上做这种事情真的是没有意义的事情。
有兴趣的人自己研究吧。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.27.80.199 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/DigiCurrency/M.1702815946.A.F8D.html
※ 编辑: DarkerDuck (114.27.80.199 台湾), 12/17/2023 20:48:10
※ 编辑: DarkerDuck (114.27.80.199 台湾), 12/17/2023 21:13:14
1F:推 Bewho: 持续关注技术 12/17 20:54
2F:推 dnac6h12o6: 推推 12/17 20:58
3F:推 jixian: 推 12/17 21:13
4F:推 MustangF: 推 12/17 21:19
5F:推 leechiungyi: 看不懂还是默默推了 12/17 21:26
6F:推 kf013099: Eth 上已经有了,叫 ethscriptions ...真的莫名其妙lol 12/17 21:28
7F:推 qw5526259: 推~~~ 12/17 21:53
8F:推 MACD: 在EVM上发铭文就是一件很瞎的事情,但是币圈就是有一个怪现 12/17 22:05
9F:→ MACD: 象,越没用的东西越能够赚钱 12/17 22:05
10F:推 wahaha99: 原来BRC-20不只是垃圾,还是垃圾中的垃圾 12/17 22:17
11F:→ wahaha99: 这不修掉对BTC不是好事,毕竟是加密货币龙头, 12/17 22:17
12F:→ wahaha99: 链上都是垃圾是怎样 12/17 22:17
13F:推 Shinn826: 现在链上卡了一堆垃圾 Gas高矿工爽 打铭文的迟早要归零 12/17 23:20
14F:推 ripple0129: 换句话说ERC20做成铭文就是放弃矿工验证,给莫名的in 12/17 23:35
15F:→ ripple0129: dex server验证XD 12/17 23:35
16F:推 zack0000: 推 这波乱喷一波 12/17 23:36
17F:推 gajo1564: 推 不过赌徒无所谓安全不安全 有人当流动性能下车就行 12/18 00:17
18F:推 gR7P4zXH: Luke XDD 12/18 01:04
※ 编辑: DarkerDuck (122.121.132.61 台湾), 12/18/2023 01:11:35
19F:推 sdtty: 推 12/18 03:05
20F:推 Orisinal: 现在风气就是管他什麽内涵 反正fomo进去 然後翻了几倍 12/18 05:17
21F:→ Orisinal: 财富自由 12/18 05:17
22F:推 ssnopra: 推 12/18 09:54
23F:推 shuo19971203: 也不是不能冲 也不一定赚不到钱 但你要明白铭文就 12/18 10:13
24F:→ shuo19971203: 是垃圾 拿你的真钱冲垃圾 值不值得 风险会不会大 12/18 10:13
25F:→ shuo19971203: 就自己判断了 12/18 10:13
26F:推 adamcha: 加密货币就是充斥一堆垃圾 才让一般人不敢进场 12/18 10:37
27F:推 jimjim951357: 推 12/18 12:21
28F:推 wlsh5701: EVM版的铭文甚至不用写到storage 用calldata还更省gas 12/18 13:06
29F:推 allen139443: 用evm捏铭文币某种程度上也算一种行为艺术了lol 12/18 13:43
30F:推 cweotn: 推 12/19 12:01
31F:→ wlsh5701: 只要能够做json留言版的地方都可以玩铭文 12/19 12:09
32F:推 Ayukawayen: 论PTT Tipper是不是一种铭文(?) 12/19 12:11
33F:推 leofu100: 好文推 12/19 14:40
34F:推 he00234643: 看不懂先推一个就对了@@ 12/19 16:38
35F:推 andy7829: 推黑鸭大 12/19 19:19
36F:推 CN091118: 看不懂推@@ 12/19 21:27
37F:推 ms0529876: 推 12/20 01:40
38F:推 tomroy: 这种烂东西竟然可以换钱.... 12/20 10:46
39F:推 bojue: 先推再看 12/20 13:27
40F:推 ydnar331: 推 12/20 13:40
41F:推 albertBTC: 重点就是我们矿工赚翻了 12/21 02:48
43F:→ albertBTC: 1t收益达到 3.5台币,120t比特币矿机,1天收益420台币 12/21 02:51
44F:→ albertBTC: (电费200台币)每天净利润220台币上下 12/21 02:51
45F:推 albertBTC: 炒铭文有没有赚钱我不知道,但矿工100%赚手续费 12/21 02:53
47F:推 redbullwings: 长知识! 12/21 10:21
48F:推 BisWang: 推技术 12/21 16:00
49F:推 kidneyweakx: 应该未来btc上要是src20或rune这类像cashtoken协议 12/21 22:06
50F:→ kidneyweakx: BRC20太过暴力 风险真的太高 12/21 22:06
※ 编辑: DarkerDuck (36.236.242.187 台湾), 12/22/2023 18:25:37
※ 编辑: DarkerDuck (36.236.167.70 台湾), 12/22/2023 19:50:47
51F:→ jinhouse123: 其实也可以创69协议,那聪又可以再重新玩一遍。。 12/24 08:30
52F:推 justben: 重新使用木轮 比重新发明轮胎更屌 12/28 00:54
53F:推 mystage: 推 01/14 13:04