# Web3.0 / Blockchain ? **Published by:** [Suyi](https://paragraph.com/@suyi-cn/) **Published on:** 2022-09-17 **URL:** https://paragraph.com/@suyi-cn/web3-0-blockchain ## Content 过去常听别人讲区块链,但大多是停留在炒币的层面,过年假期简单尝试了一下 DApp 开发,不禁在想,区块链究竟能给我们带来什么?应用场景是什么,以及怎么做合适,这些问题,币圈依然在探索,但我们这里先从几个简单的例子切入,从应用层去做一点大胆的尝试。应用场景基础场景:用户体系众所周知,基础在每一个应用/业务系统中,我们都必须实现一套用户体系,我们需要的到底是什么?这里就不故弄玄虚了,给出我的理解:identityrole/permission后续的业务流程,几乎都是在此之上的拓展。 一个基础的概念是,钱包的地址是唯一的,其次,区块链钱包的所有权在哪里?——是私钥的所有者。 这对应到用户体系是不就是账号密码吗?我们建立的用户体系,如果服务器被攻击,甚至可能导致社工库攻击,导致用户其他站点的资源受损,但如果换成钱包的地址呢,私钥在用户手中,我们又能得到唯一的地址对应到用户的 identity,显而易见,我们不再需要建立一张 用户表 了! 有了用户,还需要什么?—— 角色权限表。EIP-1155: Multi Token Standard https://eips.ethereum.org/EIPS/eip-1155这里我们就看到 NFT 的应用场景了,这个概念对很多人还是很模糊,我们拿 ERC1155 的 NFT 标准一看,就会发现有趣的事情,可以用来做权限角色啊!我通过 ERC1155 在 BSC TEST NETWORK 部署了一份智能合约,其中设定了四种角色如下:export const COLLECTION_ENUM = { PLATINUM: 0, GOLD: 1, SILVER: 2, COPPER: 3, }; 并且合约的构造函数中,设定好了数量(当然,数量可变)如下:contract SPSR is Initializable, ERC1155Upgradeable { function initialize() public initializer { __ERC1155_init(''); _mint(msg.sender, 0, 10**2, ''); _mint(msg.sender, 1, 10**4, ''); _mint(msg.sender, 2, 10**6, ''); _mint(msg.sender, 3, 10**8, ''); } } 怎么做?—— 拥有对应的 NFT 则表示该地址有对应的 角色/权限!基础场景:登录认证EIP-4361: Sign-In with Ethereum. Standardizes off-chain authentication for Ethereum accounts to establish sessions. https://eips.ethereum.org/EIPS/eip-4361参考该 EIP 以及对应的工具库如 SIWE 可以看到,我们能够使用钱包(off-chain)实现为 ETH 账户建立 Session,由此实现登录的能力。鉴权能力可通过后端查询(RPC调用)该账户持有的 NFT 实现。拓展场景:多站鉴权/创作激励基于上述两种场景,我们可以实现认证鉴权,那么又一个问题来了,拓展场景是什么呢? 举例来说,CNode.js / CNPM 都需要用户体系和角色,但是部署两份合约显然是需要消耗 GAS 的,那我们就可以使用同一份智能合约,在不同站点公用,通过后端查询对应的区块链网络,比如我定义的 SPSR ERC1155 的 NFT,在 CNode.js / CNPM 去 BSC 查询用户持有的 NFT 来判断角色,进而实现对应的业务逻辑。 再者,我们也可以发行对应的 TOKEN,基于 ERC20 合约,建立代币,激励社区,减少类似 COLORJS 的悲剧。EIP-20: Token Standard https://eips.ethereum.org/EIPS/eip-20代币可用于:兑换 存储空间等兑换 T恤 等纪念品技术方案工具包/库https://github.com/spruceid/siwe未完待续。 ## Publication Information - [Suyi](https://paragraph.com/@suyi-cn/): Publication homepage - [All Posts](https://paragraph.com/@suyi-cn/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@suyi-cn): Subscribe to updates