LXDAO官网升级开源计划意见收集

已完成官网第一阶段目标:

  1. 升级依赖,包括:react、next、viem、wagmi
  2. 移除了 ethers 等不使用/过期的依赖
  3. 优化了 Eslint 自动排序导入
  4. 实现了一部分文件的 jsx 化
  5. 升级了 wagmi 相关调用,移除了 ethers 相关调用,包括:发放 Badge、Mint Buidler Card、批量发放 LXP。
  6. 整理了个人信息([address].jsx)文件,成功将1800行的代码拆分为多个文件。
  7. 删除了一些旧功能: 个人页面MintDialog, onboarding mint、vote页面
  8. 整理abi到了@/abi文件夹下,更新合约调用方式
  9. 移除了多语言相关的配置及文件

https://upgrade-lxdao.vercel.app/ 欢迎大家来找测试体验

可以通过此处提交bug feature建议:LXDAO 官网意见收集

下一步优先完成 OP 迁移,同步进行官网细节的优化,见下一帖。

2 Likes

计划参考阮一峰老师的 blog 规范一下我们的代码提交

OP迁移计划:

目前官网涉及的合约

名称 简介 Chain 标准
Badge 集 各种Badge(Member、DHD、Expert)的合约 Polygon ERC1155
LXP LXDAO 内部积分 Polygon ERC20
Buidler Card SBT Buidler Card Mainnet ERC721
MFLayer2 Badge 学习完成纪念Badge Goerli(Expired) ERC721
MFNFT Badge 学习完成纪念Badge Mainnet ERC721

行动路径

  1. 整理需要迁移的项目清单(如上)。
  2. 检查各个合约是否支持A-Mint->B的操作,如果没有就补上,尽可能不要进行任何修改。
  3. 写一个脚本,统计持仓情况,估计重发需要使用的Gas数量。
  4. (考虑合并合约,用foundry重写,方便发放,否则东一个西一个的不方便管理)
  5. 写一个脚本,自动发放各种token。
  6. 部署至 OP Sepolia 测试网,进行测试。
  7. 整理执行文档,发放名单,交由 @Muxin_LXDAO 执行合约。
1 Like

我会整理一些可用的内容,去申请 Optimism mission request

研究了半天为什么本地后端连不上数据库,发现是 数据库的 connection 满了,需要关掉一些数据库连接,参考这片文章

SELECT pg_terminate_backend(pid) FROM pg_stat_activity
WHERE pid <> pg_backend_pid()
AND state in ('idle', 'idle in transaction', 'idle in transaction (aborted)', 'disabled')
AND usename != 'rdsadmin';

调研了下 NFT.Storage 停止提供上传 IPFS 对我们 LXDAO 的影响。

  1. 更新/ onboarding过程中会报错,但实际上会更新
  2. buidler card 无法更新。

可选的调整方案:

  1. 中心化:一律上传 AWS S3,头像上传已经这么做了。
  2. 去中心:替换 NFT.Storage 的服务为 Infura 的,可能要充钱。

紧急处理方案:
因为修这个东西可能还是要花蛮多时间的,但实际上上传 IPFS 在大多数时候并不是必要的流程,所以为了官网的 UX 体验可以先把相关代码注释掉。

NFT_STORAGE_TOKEN

  • storeBuidlerMetaData (utils function)
    @Controller(‘buidler’) @Post(‘/:address/uploadIPFS’) 管理员 Sync to IPFS会用到
    @Controller(‘buidler’) @Put(‘/:address’) onboarding/update时会用到
    @Controller(‘buidler’) @Post(‘/joinProject’) 邀请人加入项目组时会用

  • uploadToNFTStorage (service)
    @Controller(‘upload’) @Post(‘/ipfs’) Avatar(已废弃) UploadImage(working group bg 会用)

对的,有一些项目 MetaPavo 等共用了一个数据库,应该迁移走,避免出现链接过多的问题。目前就是定期重启先处理一下

一些具体的代码细节不需要放在这里吧

不是很多我就先放这了,顺便也是工作量证明

研究了一宿,终于能够重新部署 Buidler card 到 OP Sepolia 上并 Verify,
顺便更新了一波,写了个 mint 的脚本。
但坏消息是,mint 函数只能给自己 mint。
下一步计划写一个 Airdrop 方法,打算找 @kahn.yuan 审核一下吧。

function mint(bytes calldata metadataURI, bytes calldata signature)
        external
    {
        require(
            balanceOf(_msgSender()) == 0,
            "LXDAOBuidler: The buidler has already minted."
        );

        require(
            _verify(_hashBytes(metadataURI, _msgSender()), signature),
            "LXDAOBuidler: Invalid signature."
        );

        uint256 tokenId = _nextTokenId();
        _safeMint(_msgSender(), 1);
        buidlerStatuses[tokenId] = Status.Active;
        ILXDAOBuidlerMetadata(metadataAddress).create(tokenId, metadataURI);

        emit Minted(_msgSender(), tokenId);
    }

有一个问题需要注意:发送邮件功能缺少权限校验,直接调用接口就可以发,这个需要处理一下

OP 准备工作基本完成,相关脚本已更新,详情(脚本、快照)见各个仓库:

https://github.com/lxdao-official/lxp-contracts

https://github.com/lxdao-official/lxdao-badge-contract

OP Sepolia 合约
Buidler Card
LXP
Badge

发现一个之前的官网需求表

迁移后的 LXP:
0xA798cbF127fCBeeBE3359254271Fc1074362a9A4

迁移后 Buidler Card:
0xd7F2995db07e87C870238E80bb45CD0957dd8D02
Opensea

迁移后 Badge:
0x8f4c2c84bB47670D15c17c7C60f29c97dCF00b0b

目前消耗gas 0.0024ETH