本文主要面向有一点区块链合约开发基础的码农,写过solidity等语言,希望看看新的Flow区块链是怎么样的,为什么NBA、冬奥会都选择了flow区块链发行NFT,以及是否能快速迁移到Flow。
首先还是讲一个大家最常问的问题,为什么选择Flow?类似的文章也非常多了。不过,不认可的还是不认可@#¥@#¥,主要还是因为从未真正了解过。这里笔者就直接PUA 了:“面向资源的编程,才是NFT的未来”。真正写了、部署了flow合约,才能体验到flow的魅力,谁用谁知道。
图1 Flow/Cadence完全具备成为Web3.0时代 iPhone/ios的潜力
如果非要写明一点flow/cadence特色的话,那就是“便宜,便宜,还**是便宜”。交易成本降低是促进交易繁荣的基本条件,以太坊及其模仿者们明显还不太具备这个条件。按照最近几个月的均价,以太坊上铸造一个标准ERC721的NFT,大概一二百块钱左右,其他的如波场等类以太坊平台,大概几十块钱的样子,而flow上基本都是.........几分钱!
表1 不同区块链的年运行电量消耗(官网blog),大致和铸造NFT的价格正相关
区块链 |
年耗电量 (GWh) |
Bitcoin |
|
Ethereum |
|
Solana |
|
Polygon |
|
Flow |
0.18 |
下面就书归正传,开始说下Cadence。Cadence就是Flow区块链的合约语言。一段典型的cadence代码是这样的:
let acct1ReceiverRef = acct1.getCapability(/public/CadenceFungibleTokenTutorialReceiver)
.borrow<&ExampleToken.Vault{ExampleToken.Balance}>()
?? panic("Could not borrow acct1 vault reference")
Cadence的语言风格并不是常见的C++、python、java类型的,而是相对小众的Rust等,因此大部分码农学习起来,还是稍微需要有那么一点点耐心的。这也是不少Solidity码农第一眼看到Cadence,就感觉有点难的原因。
而本文的目的,也是希望能够让Cadence的学习更加丝滑。本系列短文为典型的实用主义风格,随看随用,作为系列短文的第一节,再简单说一些学习的“捷径”:
1 多记记cadence几个特色符号和语法就行,其他的语法和常见的python、java等就没啥不一样。
2 体会啥是面向资源的编程。资源其实可以看作是一类特殊的结构体,有一些特定的用法。当然,还要多看看Cadence中账号的内置函数,主要也是和资源相关的。
3 和以太坊领域erc20和erc721类似,大部分合约只要继承下标准合约,改下token名称就行了。Cadence的token和NFT合约也是类似的,就是合约名字多改几个位置而已。区块链领域,import/ctrl c+ctrl v 是一种美德。
本系列短文的目的,就是让你能快速的将solidity程序迁移flow cadence,快的几天,慢的一周足矣。学习nft,深耕韭菜地,漫步元宇宙,入门必看。
本系列文章大致分为如下一些小的短文,每个都相对独立,解决一个Cadence实际开发问题:
1 为什么选择flow ,本文内容
2 从solidity到cadence,主要介绍下两种语言的语法差异
3 从truffle到flow cli , 介绍脚本部署差异
4 从remix到playground ,介绍可视化编程IDE
5 从web3.js到FCL.js ,介绍web端调用差异
6 钱包的选择 , 用户账号
7 erc20迁移 ,这个是token了
8 erc721迁移 , 这个是NFT
9 盲盒迁移 , 这是主要介绍cadence随机数的应用
10 如何设计复杂的flow应用 ,有追求的码农可以看看
11 哪里可以抄代码 ,大部分码农的需要
12 可能用到的flow生态项目 ,运营上线必备,包括如何加入生态赚flow
短文中的测试代码后续均会放在这里:
maris205/flow-is-best · GitHub
作者简介,mariwang/wechat, 曾在互联网大厂摸鱼,后被毕业,拉个小山头,靠做大数据赚点小钱钱。2017年9月后开始关注区块链+大数据研究,团队开发的minerva大数据系统曾获IPFS社区推荐。曾在小象学院开设过以太坊solidity课程,目前为flow技术大使,参与了flow的课程设计和助教工作。