DAPP质押挖矿项目系统开发源码搭建
什么是DApp?App我们都知道是客户端应用,是application的简称【181公链系统2591合约開发3365微电】DApp就是D+App,D是英文单词decentralization的首字母,单词翻译中文是去中心化,即DApp为去中心化应用。这是从字面上去理解这个概念,要在脑中形成清晰、准确、必要的概念,还需要深度去理解DApp。
有了App,怎么还要有DApp?
首先我们思维中反应是这个疑问,为什么要有DApp,现在的App不是挺好吗?面对新鲜事物大多数人大多数时候潜意识是排斥抗拒的。其实两者并不是取代关系,谁替代谁,谁淘汰谁,而是并存关系,或者说DApp是对App的丰富完善。因为DApp直接和区块链技术挂钩,和交易数据、交易资产有关联,和不可篡改去中心化存储有关联,所以随着区块链技术越来越成熟普及,DApp将越来越受重视,并更多地出现在各个生活场景中。
func (t *SimpleChaincode) Init(stub shim.ChaincodeStubInterface) pb.Response {
fmt.Println("ex02 Init")
_, args := stub.GetFunctionAndParameters()
var A, B string // Entities
var Aval, Bval int // Asset holdings
var err error
//接受了四个参数
if len(args) != 4 {
return shim.Error("Incorrect number of arguments. Expecting 4")
}
// Initialize the chaincode
//A代表a
A = args[0]
//A的value是100
Aval, err = strconv.Atoi(args[1])
if err != nil {
return shim.Error("Expecting integer value for asset holding")
}
//B代表b
B = args[2]
//b的value是200
Bval, err = strconv.Atoi(args[3])
if err != nil {
return shim.Error("Expecting integer value for asset holding")
}
fmt.Printf("Aval = %d, Bval = %d\n", Aval, Bval)
// Write the state to the ledger
err = stub.PutState(A, []byte(strconv.Itoa(Aval)))
if err != nil {
return shim.Error(err.Error())
}
err = stub.PutState(B, []byte(strconv.Itoa(Bval)))
if err != nil {
return shim.Error(err.Error())
}
return shim.Success(nil)
}
前面从字面上说是去中心化应用,App为什么需要去中心化呢?在回答这个问题前,得先知道另一个概念——智能合约。合约我们都知道,类似于合同、协议、契约等共同遵守的条例,而智能合约是电子版合同、数字化合约、智能化合约,是将合同合约用代码写成一段程序,这段代码一旦写好就公之于众,且无法修改无法篡改,当外界条件发生变化如违约或合同到期,智能合约会自动触发。
假设,有一位作者想出书但没有钱,想通过众筹方式筹钱,于是TA和读者粉丝们约定好:出版后依据书的销量进行分成,并将约定好的内容写进智能合约。这样一来,如果书大卖后作者觉得不应该分这么多想单方面毁约或者修改内容,都无法成功,即使作者再强势读者再弱势,也没法改合约。因为合约已经在区块链上了,不再是一式两份,而是所有参与者都存储一份,所以作者不得不遵守合约规定。(不过如果发生法律纠纷,目前智能合约不纳入法律判断依据。)
DApp就是智能合约+App。由于我是一介码农,站在开发角度来看,DApp是前端界面+智能合约,前端就是和用户交互的,你可以选择各种命令,智能合约自然就是和区块链(分布式数据库)交互了。
有了App,怎么还要有DApp?
首先我们思维中反应是这个疑问,为什么要有DApp,现在的App不是挺好吗?面对新鲜事物大多数人大多数时候潜意识是排斥抗拒的。其实两者并不是取代关系,谁替代谁,谁淘汰谁,而是并存关系,或者说DApp是对App的丰富完善。因为DApp直接和区块链技术挂钩,和交易数据、交易资产有关联,和不可篡改去中心化存储有关联,所以随着区块链技术越来越成熟普及,DApp将越来越受重视,并更多地出现在各个生活场景中。
func (t *SimpleChaincode) Init(stub shim.ChaincodeStubInterface) pb.Response {
fmt.Println("ex02 Init")
_, args := stub.GetFunctionAndParameters()
var A, B string // Entities
var Aval, Bval int // Asset holdings
var err error
//接受了四个参数
if len(args) != 4 {
return shim.Error("Incorrect number of arguments. Expecting 4")
}
// Initialize the chaincode
//A代表a
A = args[0]
//A的value是100
Aval, err = strconv.Atoi(args[1])
if err != nil {
return shim.Error("Expecting integer value for asset holding")
}
//B代表b
B = args[2]
//b的value是200
Bval, err = strconv.Atoi(args[3])
if err != nil {
return shim.Error("Expecting integer value for asset holding")
}
fmt.Printf("Aval = %d, Bval = %d\n", Aval, Bval)
// Write the state to the ledger
err = stub.PutState(A, []byte(strconv.Itoa(Aval)))
if err != nil {
return shim.Error(err.Error())
}
err = stub.PutState(B, []byte(strconv.Itoa(Bval)))
if err != nil {
return shim.Error(err.Error())
}
return shim.Success(nil)
}
前面从字面上说是去中心化应用,App为什么需要去中心化呢?在回答这个问题前,得先知道另一个概念——智能合约。合约我们都知道,类似于合同、协议、契约等共同遵守的条例,而智能合约是电子版合同、数字化合约、智能化合约,是将合同合约用代码写成一段程序,这段代码一旦写好就公之于众,且无法修改无法篡改,当外界条件发生变化如违约或合同到期,智能合约会自动触发。
假设,有一位作者想出书但没有钱,想通过众筹方式筹钱,于是TA和读者粉丝们约定好:出版后依据书的销量进行分成,并将约定好的内容写进智能合约。这样一来,如果书大卖后作者觉得不应该分这么多想单方面毁约或者修改内容,都无法成功,即使作者再强势读者再弱势,也没法改合约。因为合约已经在区块链上了,不再是一式两份,而是所有参与者都存储一份,所以作者不得不遵守合约规定。(不过如果发生法律纠纷,目前智能合约不纳入法律判断依据。)
DApp就是智能合约+App。由于我是一介码农,站在开发角度来看,DApp是前端界面+智能合约,前端就是和用户交互的,你可以选择各种命令,智能合约自然就是和区块链(分布式数据库)交互了。