与传统的App在中心化服务器运行后端代码不同的是,dApp的后端代码是运行在区块链上的。当然,dApp的前端代码和UI可以使用任何语言开发,可以部署在任何服务器上与后端逻辑相交互。FDF循环互助智能合约是一种基于区块链技术的互助金融模式,也是智能合约在金融领域应用的一种体现。该合约通过自动
与传统的App在中心化服务器运行后端代码不同的是,dApp的后端代码是运行在区块链上的。当然,dApp的前端代码和UI可以使用任何语言开发,可以部署在任何服务器上与后端逻辑相交互。
FDF循环互助智能合约是一种基于区块链技术的互助金融模式,也是智能合约在金融领域应用的一种体现。该合约通过自动化程序实现自愿参与者之间的资金循环流动和风险分散,旨在打造一种公正、透明、高效的金融服务模式。
具体来说,FDF循环互助智能合约的流程如下:
注册成为参与者。任何人都可以通过智能合约注册成为参与者,但需要持有一定数量的ERC20代币作为参与资格。
投入资金。参与者可以将自己的资金投入合约,以便参与合约中的资金循环流转,获得相应的收益。
等待收益。合约中的资金将在循环中流转,参与者将按照一定比例获得相应的收益,收益将在一定周期内自动发放到参与者的钱包账户中。
参与循环。参与者也可以选择参与资金循环流转,即将自己的资金转入到下一个循环周期中。这样,参与者可以获得更高的收益。
区块链(Blockchain)是由节点参与的分布式数据库系统,它的特点是不可更改,不可伪造,也可以将其理解为账簿系统(ledger)。它是比特币的一个重要概念,完整比特币区块链的副本,记录了其代币(token)的每一笔交易。通过这些信息,我们可以找到每一个地址,在历史上任何一点所拥有的价值。
Dapp
DApp是Decentralized Application的缩写,中文直译为去中心化应用,也可以理解为分布式应用。去中心化应用是基于区块链底层开发平台建立的。比如以太坊和EOS,DApp与底层平台的关系就好比APP与ios和安卓系统。
区块链世界中,经常听到dapp这个词。我们用惯了手机app。Applications.说白了就是给你的手机上安上一个小软件,小程序,然后你可以用。今天从头说说dapp,再聊聊区块链的功能
DApp也在演变不断进化,广义地说,从最初的比特币到现在因IC0发代币盛行一时的以太坊,再是各路公链崛起强大,然后是公链、联盟链、私有链齐头并进发展,最后是链上的各种应用应运而生蓬勃发展,现在我们经常说的DApp更多的是这样一种定义:
前端+智能合约+token(通证经济)
之前开发一个App需要一家公司有启动资金招开发人员进行开发然后推广运营,现在的DApp可能不需要是一家公司,或许个人或自媒体都可以,整个流程可以是
写白皮书
明确共识机制
Token激励机制
智能合约开发
去中心化社区自治
创建智能合约
我们dApp中的智能合约是一个简单的例子,它可以查看数据并且反应出区块链上的变化。在这个例子中,我们会通过Chainlink ETH/USD喂价对查看ETH/USD的价格,然后将结果永久存储在智能合约上。
第一步是打开Chainlink的文档,然后导航到Using Data Feeds页面。从这里将源代码复制进你的IDE中的一个新的文件里(比如Visual Code),或者你可以点击“Open In Remix”按钮,然后使用在线IDE Remix。
在这个例子中,我们会使用Visual Studio Code和Hardhat(一个EVM开发框架)。
首先,为我们的dApp创建一个新的文件夹,并在这个文件夹中创建一个后端文件夹,用来存储智能合约代码:
mkdir chainlink-dapp-example
cd chainlink-dapp-example
mkdir backend
cd backend
接下来,我通过VS Code打开创建好的文件夹,然后安装Hardhat:
npm init-y
npm install--save-dev hardhat
npx hardhat
(choose create javascript project,choose default parameters)
当安装完成之后,在“contracts”文件夹中删掉Touch.sol,然后在这个文件夹中创建一个叫做PriceConsumerV3.sol的文件。在这个文件将存储我们的合约,所以将Chainlink文档中的代码复制到这个文件中,然后保存。
在样例代码中,你会看到demo合约已经有一个叫做getLatestPrice的功能来通过Rinkeby上的ETH/USD喂价对查看Ethereum的当前价格。
function getLatestPrice()public view returns(int){
(
/uint80 roundID/,
int price,
/uint startedAt/,
/uint timeStamp/,
/uint80 answeredInRound/
)=priceFeed.latestRoundData();
return price;
创建一个新的变量和函数,在智能合约上储存这个值。
int public storedPrice;
1
然后,创建一个新的函数,它会被dApp的前端调用。这个函数会通过调用getLatestPrice函数查看Ethereum的最新价格,然后将这个值存储在storedPrice这个参数中:
function storeLatestPrice()external{
storedPrice=getLatestPrice();
}
你的新的合约应该和下面的一样:
//SPDX-License-Identifier:MIT
pragma solidity^0.8.7;
import" chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol";
contract PriceConsumerV3{
AggregatorV3Interface internal priceFeed;
int public storedPrice;
/**
*Network:Rinkeby
*Aggregator:ETH/USD
*Address:0x8A753747A1Fa494EC906cE90E9f37563A8AF630e
*/
constructor(){
priceFeed=
AggregatorV3Interface(0x8A753747A1Fa494EC906cE90E9f37563A8AF630e);
}
/**
*Returns the latest price
*/
function getLatestPrice()public view returns(int){
(
/uint80 roundID/,
int price,
/uint startedAt/,
/uint timeStamp/,
/uint80 answeredInRound/
)=priceFeed.latestRoundData();
return price;
}
function storeLatestPrice()external{
storedPrice=getLatestPrice();
}
}
对比APP来看,最大不同是中心化与去中心化,App先是要有钱,所以先融资,然后再有人,所以先招齐人,然后再开发运营,所以先成立一个团队一家公司;而DApp则是继承传统App之下发展,结合区块链的特点所形成的产物,它更像是众筹模式、共享模式和去中心化模式,先有发起人或组织,写好白皮书明确了共识机制和token分配与激励,开发好应用再是持有token的人即为股东,直接和app的盈利关联,也可以说用户即是股东,持有的token像股票可以买卖,在支持的交易所交易。所以持有该DApp的token相当于拥有所有者权益,可以想象未来,现在是处处琳琅满目的App应用,未来是各个领域都会有DApp,每个人都将因token分类以token群分。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!