NFT借贷平台允许用户通过抵押NFT来借入流动性资产。
NFT中的点对点、点对池和CDP借贷流程
相比同质化加密货币,NFT是一种长期投资,其面临的挑战之一就是资金管理。持有NFT意味着将大量资金锁定在一种流动性较差的投资上,而且这种投资还可能会在几天内价格下跌,NFT质押借贷平台13z开4z77发z558。
超额抵押的NFT借贷协议(如传统DeFi中的Compound、Aave和Maker)允许用户在不损失NFT敞口的情况下,释放NFT投资组合中的一部分流动性。目前的NFT借贷市场有以下三种:
点对点(Peer-to-Peer)
在点对点(P2P)借贷中,借款人与出借人直接匹配。这是目NFT借贷的主要方式。
这样一来,NFT的所有者可以选择各种贷款价值和利率的组合,最终选择最适合自己的。因此,点对点借贷是对冲NFT敞口的完美选择。
数据智能指的是以数据作为生产资料,通过数据处理、机器学习、人机交互等技术,从大量数据中提炼、发掘关键信息,从而为人们的决策提供数据智能支持,减少或消除不确定性。
数据智能常应用于商业决策阶段,它让机器具备了推理能力,可以自动根据数据处理结果得出佳方案,从而让企业业务运转更加高效。
未来,随着处理数据的技术更加成熟,大数据会逐渐参与业务重塑的过程。很多业务环节不再需要人参与其中,而是都能由机器自动实现。同时,人机协同领域也会迎来迅猛发展,从目前的人工智能向人类智力增强转变。
伴随着元宇宙的发展,数据智能将从现实世界逐步应用到虚拟世界中,赋能元宇宙管理与创造。使机器具备推理能力和自动管理能力的数据智能可以与虚拟数字人紧密结合,让虚拟数字人变得更加智能。
当用户在元宇宙中进行各种经营活动时,可以雇佣智能虚拟数字人生产产品、管理店铺等。即使用户下线,智能虚拟数字人也可以在元宇宙中继续工作。
社会计算:跨界信息连接虚与实
社会计算是社会科学与计算科学的交叉融合。
从广义上说,它指的是面向社会科学的计算理论和方法。从狭义上说,它指的是面向社会过程、社会NFT借贷平台允许用户通过抵押NFT来借入流动性资产。
solmate实现都较为短小精悍且经过gas优化,我个人较为推崇。solmate的ERC721实现仅有231行,读者可自行阅读。
在solmate合约中,我们可以看到核心数据结构为:
mapping(uint256=>address)internal _ownerOf;
mapping(address=>uint256)internal _balanceOf;
其中,各映射功能如下:
_ownerOf记录tokenId与持有者的关系
_balanceOf记录持有人所持有的NFT数量
其铸造方法定义如下:
function _mint(address to,uint256 id)internal virtual{
require(to!=address(0),"INVALID_RECIPIENT");
require(_ownerOf[id]==address(0),"ALREADY_MINTED");
//Counter overflow is incredibly unrealistic.
unchecked{
_balanceOf[to]++;
}
_ownerOf[id]=to;
emit Transfer(address(0),to,id);
}
通过此函数,我们更新了_ownerOf和_balanceOf实现用户铸造NFT的功能。我们可以发现用户每次铸造NFT都需要更新_ownerOf和_balanceOf映射。众所周知,在操作码gas消耗中,更新存储需要消耗大量gas。如果用户批量铸造,会在此过程中消耗大量gas。
根据数据(PDF警告),在ETH价格为1500美元时,更新存储的价格为7.5美元,而写入存储的价格为30美元。这意味着仅在mint过程中,更新映射会浪费大量资产。
转账函数定义如下:
function transferFrom(
address from,
address to,
uint256 id
)public virtual{
require(from==_ownerOf[id],"WRONG_FROM");
require(to!=address(0),"INVALID_RECIPIENT");
require(
msg.sender==from||isApprovedForAllfrom||msg.sender==getApproved[id],
"NOT_AUTHORIZED"
);
//Underflow of the sender's balance is impossible because we check for
//ownership above and the recipient's balance can't realistically overflow.
unchecked{
_balanceOf[from]--;
_balanceOf[to]++;
}
_ownerOf[id]=to;
delete getApproved[id];
emit Transfer(from,to,id);
}
由于对于每个tokenId都维护有一个mapping映射,所以转账逻辑实现也较为简单。