阐述区块链NFT铸造分红DAPP项目系统开发分析(成熟案例)

简介: 阐述区块链NFT铸造分红DAPP项目系统开发分析(成熟案例)

一个NFT是一个token/凭证,有wei一的id和owner以及关联的其他数据,目前有经济价值的NFT项目的发行方式主要分两种形式,智能合约定制,羊了个羊链游模式定制,原生开发

一次性发行一个单独的项目并包含有限个NFT,它们共享一系列特性和数据,比如CryptoPunks

在一个公共的项目里创建一个自己的NFT,比如Foundation

一种经典的NFT(BAYC,CryptoPunk,…)

// 把g2o的定义放到前面
32 typedef g2o::BlockSolver_6_3 SlamBlockSolver;
33 typedef g2o::LinearSolverCSparse< SlamBlockSolver::PoseMatrixType > SlamLinearSolver;
34
35 // 给定index,读取一帧数据
36 FRAME readFrame( int index, ParameterReader& pd );
37 // 估计一个运动的大小
38 double normofTransform( cv::Mat rvec, cv::Mat tvec );
39
40 // 检测两个帧,结果定义
41 enum CHECK_RESULT {NOT_MATCHED=0, TOO_FAR_AWAY, TOO_CLOSE, KEYFRAME};
42 // 函数声明
43 CHECK_RESULT checkKeyframes( FRAME& f1, FRAME& f2, g2o::SparseOptimizer& opti, bool is_loops=false );
44 // 检测近距离的回环
45 void checkNearbyLoops( vector& frames, FRAME& currFrame, g2o::SparseOptimizer& opti );
46 // 随机检测回环
47 void checkRandomLoops( vector& frames, FRAME& currFrame, g2o::SparseOptimizer& opti );
48
49 int main( int argc, char** argv )
50 {
51 // 前面部分和vo是一样的
52 ParameterReader pd;
53 int startIndex = atoi( pd.getData( "start_index" ).c_str() );
54 int endIndex = atoi( pd.getData( "end_index" ).c_str() );
55
56 // 所有的关键帧都放在了这里
57 vector< FRAME > keyframes;
58 // initialize
59 cout<<"Initializing ..."<<endl;
60 int currIndex = startIndex; // 当前索引为currIndex
61 FRAME currFrame = readFrame( currIndex, pd ); // 当前帧数据
62
63 string detector = pd.getData( "detector" );
64 string descriptor = pd.getData( "descriptor" );
65 CAMERA_INTRINSIC_PARAMETERS camera = getDefaultCamera();
66 computeKeyPointsAndDesp( currFrame, detector, descriptor );
67 PointCloud::Ptr cloud = image2PointCloud( currFrame.rgb, currFrame.depth, camera );
68
69 /*
70 // 新增:有关g2o的初始化
71 */
72 // 初始化求解器
73 SlamLinearSolver* linearSolver = new SlamLinearSolver();
74 linearSolver->setBlockOrdering( false );
75 SlamBlockSolver* blockSolver = new SlamBlockSolver( linearSolver );
76 g2o::OptimizationAlgorithmLevenberg* solver = new g2o::OptimizationAlgorithmLevenberg( blockSolver );
77
78 g2o::SparseOptimizer globalOptimizer; // 最后用的就是这个东东
79 globalOptimizer.setAlgorithm( solver );
80 // 不要输出调试信息
81 globalOptimizer.setVerbose( false );
82
83
84 // 向globalOptimizer增加第一个顶点
85 g2o::VertexSE3* v = new g2o::VertexSE3();
86 v->setId( currIndex );
87 v->setEstimate( Eigen::Isometry3d::Identity() ); //估计为单位矩阵
88 v->setFixed( true ); //第一个顶点固定,不用优化
89 globalOptimizer.addVertex( v );
90
91 keyframes.push_back( currFrame );
92
93 double keyframe_threshold = atof( pd.getData("keyframe_threshold").c_str() );
94
95 bool check_loop_closure = pd.getData("check_loop_closure")==string("yes");
96 for ( currIndex=startIndex+1; currIndex<endIndex; currIndex++ )
97 {
98 cout<<"Reading files "<<currIndex<<endl;
99 FRAME currFrame = readFrame( currIndex,pd ); // 读取currFrame
100 computeKeyPointsAndDesp( currFrame, detector, descriptor ); //提取特征
101 CHECK_RESULT result = checkKeyframes( keyframes.back(), currFrame, globalOptimizer ); //匹配该帧与keyframes里最后一帧
102 switch (result) // 根据匹配结果不同采取不同策略
103 {
104 case NOT_MATCHED:
105 //没匹配上,直接跳过
106 cout<<RED"Not enough inliers."<<endl;
107 break;
108 case TOO_FAR_AWAY:
109 // 太近了,也直接跳
110 cout<<RED"Too far away, may be an error."<<endl;
111 break;
112 case TOO_CLOSE:
113 // 太远了,可能出错了
114 cout<<RESET"Too close, not a keyframe"<<endl;
115 break;
116 case KEYFRAME:
117 cout<<GREEN"This is a new keyframe"<<endl;
118 // 不远不近,刚好
119 /**
120 * This is important!!
121 * This is important!!
122 * This is important!!
123 * (very important so I've said three times!)
124 */
125 // 检测回环
126 if (check_loop_closure)
127 {
128 checkNearbyLoops( keyframes, currFrame, globalOptimizer );
129 checkRandomLoops( keyframes, currFrame, globalOptimizer );
130 }
131 keyframes.push_back( currFrame );
132 break;
133 default:
134 break;
135 }
复制
基础数据构成

开发者个人钱包或者DAO的钱包发起交易,创建一个ERC721合约,它长这样:

NFT合约里包含什么信息

1.每个token的owner和url

2.实现权限的逻辑,谁可以改合约数据,比如url

项目方权限越小就越去中心化

3.实现transfer和mint的逻辑

transfer是ERC721的接口规范,逻辑大家都一样,mint一般会加一些特别限制

4.实现取钱(withdraw)逻辑,从合约里把钱转到指定账户

一般是项目方个人钱包或者DAO钱包。

什么是mint(铸造)?

合约刚刚部署/创建的时候,合约的数据里面是没有token的,创建一个token的过程就是mint,其实就是在数据库里面新增了一条数据。一般是用户支付给合约一笔钱然后合约生成一个token并且把owner设置成这个用户。

相关文章
|
7月前
|
数据采集 监控 算法
区块链量化交易系统开发策略详细丨需求步骤丨案例设计丨规则玩法丨成熟源码
策略:建立数据采集系统,获取各种市场数据,包括交易数据、新闻情报、社交媒体消息等。
|
4月前
|
区块链 C# 存储
链动未来:WPF与区块链的创新融合——从智能合约到去中心化应用,全方位解析开发安全可靠DApp的最佳路径
【8月更文挑战第31天】本文以问答形式详细介绍了区块链技术的特点及其在Windows Presentation Foundation(WPF)中的集成方法。通过示例代码展示了如何选择合适的区块链平台、创建智能合约,并在WPF应用中与其交互,实现安全可靠的消息存储和检索功能。希望这能为WPF开发者提供区块链技术应用的参考与灵感。
68 0
|
5月前
|
存储 安全 前端开发
区块链 DAPP 互助逻辑模式系统开发技术方案[源码示例]
Dapp(Decentralized Application)是指不受任何中心化组织或机构控制的、使用特定区块链技术为基础的去中心化应用程序。Dapp 是一种特殊类型的应用,它可以在任何基于区块链技术的系统,例如 Ethereum、EOS 或其他的智能合约系统上运行。
|
5月前
|
安全 编译器 区块链
区块链代币 DAPP 通缩燃烧模式系统开发技术方案
合约代码部署流程可能因区块链技术的不同实现而略有不同,但基本步骤如下:
|
6月前
|
算法 区块链
区块链项目的商业模式有哪些成功案例
**评估区块链项目潜力的关键因素包括:技术创新与应用场景(如共识算法、交易速度)、团队背景与发展战略(团队经验、市场定位)、社区活跃度与合作伙伴(用户参与、合作网络)、透明度与合规性(信息透明、法规遵循)、技术可行性(技术成熟度、安全性)及商业模式与市场可行性(市场规模、用户需求)。这些综合考量帮助判断项目的成功潜力和市场前景。**
|
6月前
|
存储 安全 算法
如何保证区块链项目的安全性和稳定性?
**区块链安全与稳定性关键点:** - 密码学保护数据传输与存储,哈希确保不可篡改 - 安全共识算法(如PoW、PoS)保证节点共识 - 智能合约审计与应急响应机制提升安全性 - 加密、身份验证增强网络安全 - 持续技术改进,采用零知识证明、侧链 - 有效运营团队与社区参与,风险评估和维护 这些措施协同作用,确保区块链项目的稳健运行。
|
7月前
|
供应链 区块链
区块链DAPP质押合约代币系统开发|模式方案
智能合约是一种数字化的合约,它将合约内容写入区块链中,保证了合约的公开透明
|
7月前
|
安全 AndFix 区块链
区块链3D元宇宙游戏系统开发规则玩法/步骤指南/源码项目
Developing a blockchain metaverse 3D game system is a complex and innovative process that requires comprehensive consideration of blockchain technology, game design and development, and virtual reality (VR). The following is the general process for developing the system:
|
4天前
|
供应链 安全 分布式数据库
探索区块链技术在供应链管理中的应用
【10月更文挑战第21天】 本文深入探讨了区块链技术如何在供应链管理中发挥关键作用,通过具体案例分析,揭示了区块链提高透明度、降低成本和增强安全性的潜力。文章首先概述了区块链技术的基本原理及其对传统供应链模式的挑战,接着详细讨论了区块链如何在不同供应链环节中实施,并分析了其带来的变革。最后,文章提出了企业在采纳区块链技术时可能面临的挑战和应对策略,为供应链管理者提供了宝贵的参考。
|
15天前
|
存储 安全 物联网
未来已来:区块链技术在物联网与虚拟现实中的应用
随着科技的不断进步,新兴技术如区块链、物联网(IoT)和虚拟现实(VR)正在逐渐改变我们的生活和工作方式。本文将探讨这些技术的发展趋势和应用场景,以及它们如何相互融合,为我们带来更便捷、安全和沉浸式的体验。
下一篇
DataWorks