# IP3 之无中生有

By [ip3protocol](https://paragraph.com/@ip3protocol) · 2022-08-25

---

### 一、背景

[IP3](https://ip3.xyz) 是一个在区块链上提供版权保护的协议。我们集合了 BAYC、Azuki 等项目的版权许可，和创作者一起制作经过版权许可的衍生品并进行售卖。我们将版权许可物化为一个 NFT，我们称之 “NFT-CD 授权卡”，获得授权卡的用户等同于获得对应 NFT 的商用和衍生品制作的授权，IP3 许可协议将其记录在区块链上，提供给用户随时查看。

目前，区块链技术发展已逐渐成熟，但开发者在应用时仍然面临挑战：

第一，区块链技术体系多、平台多，且每种技术差异比较大，对开发者来说比较难掌握；

第二，基于区块链技术的智能合约还比较新，相关配套并不是很成熟，目前缺少好的智能合约开发和测试工具，以及智能合约的安全审计工具；第三，区块链应用与传统应用在开发模式和运维模式上存在一定差异，这种转变可能会导致一些开发者不适应。

本文会以技术的角度，详细记录下IP3从无到有的过程，说说**大龄传统互联网程序员毕业后** 如何转型成为**日薪千刀的** web3 builder。

### 二、概述

![网络拓扑](https://storage.googleapis.com/papyrus_images/9186efe8790319fd7c3e0fea8dac42e57ac04453b2a15312fac5b07febce8c66.png)

网络拓扑

如图，我通过网络拓扑的方式列出了IP3在前端、后端、区块链涉及的所有技术栈和服务，文后会针对每一项做详细的拆解。以目前区块链的基础设施和性能来看，大部分DApp仍然需要借助web2下的大多数基础服务才能给用户一个比较好的交互体验，一款基础功能的DApp开发，对技术深度要求并不高，如果大家有移动互联网或者web开发经验，应该能很好的理解钱包登录，合约调用，链上异步确认这些行为，但是因为涉及的范围比较广，几个人的小团队，对开发同学的技术广度要求较高，需要具有边阅读文档边开发的能力。

### 三、框架选择

IP3 产品形态上更接近opensea，所以在开发，构建，部署的框架选择上都做了借鉴，包括视图框架，图片处理，testnets/mainnet的分离部署，rinkeby测试网选择等：

*   **前端视图框架：**
    
    之前工作中没做过前端开发，所以进行了大量学习后，在最常用的几个框架中选则了react mui，前期验证功能，可以直接在mui store中购买一个项目需要的模板样式，进行二次开发即可。
    
    [mui.com/zh](https://mui.com/zh/)
    
*   **后端框架：**
    
    后端分两大部分，一个是Dapp网站数据的正常业务逻辑交互服务，一个是前端链上交互后，所需要的后台异步同步服务，如NFT的mint、transfer、pay等操作，都需要链上状态确认后，修改对应数据状态，才可在前端正确展示，从性能上考虑，其实后端用golang，rust，java开发比较合适，IP3项目因为工期，人力原因，也使用的js框架，因为可以复用部分前端代码。。。
    
    [feathersjs.com](https://feathersjs.com)
    
*   **合约开发、部署：**
    
    合约开发目前主流框架是truffle和hardhat，各有优缺点，IP3是从学习 [scaffold-eth](https://github.com/scaffold-eth/scaffold-eth) 开始的，scaffold中对hardhat做了比较好的封装（开发，部署，abi、bitcode提取等），所以后面的也就一直延用了。
    
    [hardhat.org](https://hardhat.org)
    
*   **前端合约交互：**
    
    scaffold 中对前端和合约交互做了封装，但代码风格、文档、支持的功能都没有wagmi好，在开发完整体逻辑后，把所有前端合约交互框架改为了wagmi。
    
    [wagmi.sh](https://wagmi.sh)
    
*   **后端合约交互：**
    
    后端主要是对IP3 一个主合约，一个版权合约，4个蓝筹项目衍生品合约 状态的监测，对支持的蓝筹项目在链上行为的监测（交易，转移，销毁等）。
    
    [ethers.org](https://ethers.org)
    
*   **Testnets调试：**
    
    合约开发完后，可以自己搭建hardhat单节点测试网络，来测试合约基本功能，基本功能测试完成后，部署到rinkeby测试网，再进行前后端合约交互测试。
    
    [rinkebyfaucet.com](https://rinkebyfaucet.com)
    
*   **Mainnet调试**
    
    主网部署，目前都是在remix上编译，模拟部署，没有问题了，才会使用hardhat进行真实部署。
    
    [remix.ethereum.org](https://remix.ethereum.org)
    
*   **Aws 部署**：
    
    IP3部署了两套环境， [testnets.ip3.xyz](https://testnets.ip3.xyz) 为开发调试和预上线使用，只和Eth Rinkeby网络交互，[ip3.xyz](https://ip3.xyz) 为线上环境，只和Eth Mainnet交互。
    
    [docs.aws.amazon.com](https://docs.aws.amazon.com)
    

### 四、功能实现

*   合约开发
    
    [1、IP3 License 合约开发 ERC1155](https://mirror.xyz)
    
    [2、IP3 Copyright 合约开发 ERC721](https://mirror.xyz)
    
    [3、IP3 衍生品 合约开发](https://mirror.xyz)
    
*   前端/后端业务开发
    
    [1、钱包登录](https://mirror.xyz)
    
    [2、合约调用](https://mirror.xyz)
    
    [3、链上数据监测](https://mirror.xyz)
    
    [4、图片生成、ipfs，s3上传](https://mirror.xyz)
    
    [5、gif图动态生成](https://mirror.xyz)
    
*   服务部署
    
    [1、Aws 域名解析、Route-53、CloudFont 使用](https://mirror.xyz)
    
    [2、NFT IPFS 图片清洗](https://mirror.xyz)
    
*   合约部署
    
    [1、合约一键部署](https://mirror.xyz)
    
    [2、合约一键导出](https://mirror.xyz)
    

### 五、开发周期

1、前端开发：40人日

2、后端开发：14人日

3、合约开发&部署：14人日

4、前后端联调:：7人日

5、bug fix：14人日

### 六、费用

除了花费的人力、时间成本 ，IP3在开发、部署过程中的必要费用如下

1、AWS：域名解析，s3，ec2，数据库等合计约 $250 每月

2、以太坊主网合约部署：Ip3目前共部署6个合约，花费约0.3Eth

3、ip3.xyz 域名 $2000 每年

### 七、传统互联网程序员转型之路

later …

---

*Originally published on [ip3protocol](https://paragraph.com/@ip3protocol/ip3-3)*
