DeFi金融NFT質押借貸Dapp系統開發流程以及合約定製功能分析

nice1022發表於2023-03-03

DeFi

DeFi其實是一種FinTech加上區塊鏈的應用。
FinTech是Financial Technology的縮寫,開發I34-合約I633-部署53I9也叫做金融科技,其應用場景包括以下一些種類:
支付
身分驗證
保險
投資
證券交易所
借貸
以借貸為例,我們看以下示例圖:

可以看到其特點是沒有中間商比如銀行、金融機構等,一切都是以智慧合約為準。當然智慧合約一定會考慮到風險控制等因素,比如一般包括超額質押,強制清算等。
舉個例子,超額質押就是市值100元的物品只能貸給你50元,強制清算就是比如市值100元如果跌到了75元就會自動觸發智慧合約進行清算。


NFT即Non-Fungible Token,也就是非同質化代幣,

目前的兩大NFT作品是CryptoPunk及Bored Ape Yacht Club。 前者是於加密貨幣圈子成名NFT專案,它是一萬個以不同膚色、髮型、鬍子、口紅、眼鏡、帽子等組合而成的頭像,每個Punk的長相都是獨一無二。

2021年5月,9個CryptoPunk在佳士得拍賣,結果以1,700萬美元易手,及後7523號CryptoPunk在蘇富比拍賣,亦以1,175萬美元成交。

NFT Applications

NFT的型別,我們可以分為以下的型別:
藝術品
收藏品
金融
遊戲
音影片
虛實整合

NFT Earning

NFT的盈利模式:

NFT結構

NFT 錨定的是非同質化資產的價值
NFT的一般是json結構:

{
    "name": "nft1",
    "description": "This is the NFT of vincent.",
    "image": "ipfs://QmUEqqq",
    "external_url":"
}

unction balanceOf(address owner) -> uint256 balance
/// @notice Find the owner of an NFT
/// @dev NFTs assigned to zero address are considered invalid, and queries
/// about them do throw.
/// @param _tokenId The identifier for an NFT
/// @return The address of the owner of the NFT
function ownerOf(uint256 tokenId) -> address owner
/// @notice Transfers the ownership of an NFT from one address to another address
/// @dev Throws unless msg.sender is the current owner, an authorized
/// operator, or the approved address for this NFT. Throws if _from is
/// not the current owner. Throws if _to is the zero address. Throws if
/// _tokenId is not a valid NFT. When transfer is complete, this function
/// checks if _to is a smart contract (code size > 0). If so, it calls
/// onERC721Received on _to and throws if the return value is not
/// bytes4(keccak256("onERC721Received(address,address,uint256,bytes)")).
/// @param _from The current owner of the NFT
/// @param _to The new owner
/// @param _tokenId The NFT to transfer
/// @param data Additional data with no specified format, sent in call to _to
function safeTransferFrom(address from, address to, uint256 tokenId)
/// @notice Transfers the ownership of an NFT from one address to another address
/// @dev This works identically to the other function with an extra data parameter,
/// except this function just sets data to “”.
/// @param _from The current owner of the NFT
/// @param _to The new owner
/// @param _tokenId The NFT to transfer
function transferFrom(address from, address to, uint256 tokenId)
/// @notice Change or reaffirm the approved address for an NFT
/// @dev The zero address indicates there is no approved address.
/// Throws unless msg.sender is the current NFT owner, or an authorized
/// operator of the current owner.
/// @param _approved The new approved NFT controller
/// @param _tokenId The NFT to approve
function approve(address to, uint256 tokenId)
/// @notice Enable or disable approval for a third party (“operator”) to manage
/// all of msg.sender’s assets
/// @dev Emits the ApprovalForAll event. The contract MUST allow
/// multiple operators per owner.
/// @param _operator Address to add to the set of authorized operators
/// @param _approved True if the operator is approved, false to revoke approval
function getApproved(uint256 tokenId) -> address operator
/// @notice Query if an address is an authorized operator for another address
/// @param _owner The address that owns the NFTs
/// @param _operator The address that acts on behalf of the owner
/// @return True if _operator is an approved operator for _owner, false otherwise
function setApprovalForAll(address operator, bool _approved)
/// @notice Get the approved address for a single NFT
/// @dev Throws if _tokenId is not a valid NFT.
/// @param _tokenId The NFT to find the approved address for
/// @return The approved address for this NFT, or the zero address if there is none
function isApprovedForAll(address owner, address operator) -> bool


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70011332/viewspace-2938028/,如需轉載,請註明出處,否則將追究法律責任。

相關文章