智能合约DAPP项目系统开发技术逻辑(dEOM)

简介: 智能合约DAPP项目系统开发技术逻辑(dEOM)

任何程序员学习一个新的编程语言,一个最重要的仪式就是写出一个能输出Hello World!的程序。完成后,这才算打开一个新世界的大门。本文主要介绍如何使用智能合约输出一个Hello World!。本文的步骤说明十分简单(但步骤完整),大家如果想要看详细的步骤说明,请参考智能合约编写实例这篇文章,里面的实例描述更加详细。wei+StPv888

打开测试网络的控制台
输入以下命令:

geth --datadir "~/ethdev" --dev console 2>> geth.log
这样我们就打开了测试网的控制台,之后的步骤如无特别说明都将在控制台中完成。

编写智能合约

source = "contract test { function hello() returns(string s){return 'hello world!';}}"
"contract test { function hello() returns(string s){return 'hello world!';}}"

编译智能合约

contract = eth.compile.solidity(source).test

指定创建合约的外部账户
我们首先需要从当前的账户里选择一个作为创建智能合约的外部账户:

address = eth.accounts[0]
"0x62b1746767522b36f6421e630fa0198151d72964"

然后将该账户激活:

personal.unlockAccount(address,'123456',10000)
true

最后开启挖矿,为处理交易做准备:

miner.start()
true

部署合约
部署合约就是将编译好的合约字节码通过外部账号发送交易的形式部署到以太坊区块链上。输入以下命令:

abi = [{constant:false,inputs:null}]
[{
constant: false,
inputs: null

}]

MyContract = eth.contract(abi)
{
abi: [{
  constant: false,
  inputs: null

}],
eth: {

accounts: ["0x62b1746767522b36f6421e630fa0198151d72964", "0xaa79b5468a4f4cf35a32cc976f689a5db5873f0c"],
blockNumber: 600,
coinbase: "0x62b1746767522b36f6421e630fa0198151d72964",
compile: {
  lll: function(),
  serpent: function(),
  solidity: function()
},
defaultAccount: "0x62b1746767522b36f6421e630fa0198151d72964",
defaultBlock: "latest",
gasPrice: 20000000000,
hashrate: 3302,
mining: true,
pendingTransactions: [],
syncing: false,
call: function(),
contract: function(abi),
estimateGas: function(),
filter: function(fil, callback),
getAccounts: function(callback),
getBalance: function(),
getBlock: function(),
getBlockNumber: function(callback),
getBlockTransactionCount: function(),
getBlockUncleCount: function(),
getCode: function(),
getCoinbase: function(callback),
getCompilers: function(),
getGasPrice: function(callback),
getHashrate: function(callback),
getMining: function(callback),
getNatSpec: function(),
getPendingTransactions: function(callback),
getStorageAt: function(),
getSyncing: function(callback),
getTransaction: function(),
getTransactionCount: function(),
getTransactionFromBlock: function(),
getTransactionReceipt: function(),
getUncle: function(),
getWork: function(),
iban: function(iban),
icapNamereg: function(),
isSyncing: function(callback),
namereg: function(),
resend: function(),
sendIBANTransaction: function(),
sendRawTransaction: function(),
sendTransaction: function(),
sign: function(),
signTransaction: function(),
submitTransaction: function(),
submitWork: function()

},
at: function(address, callback),
getData: function(),
new: function()
}

myContract = MyContract.new({from:address,data:contract.code})
{
abi: [{
  constant: false,
  inputs: null

}],
address: undefined,
transactionHash: "0x9f0f739a5827796fc1466a09e7771eef0978262a007f8c75c789cdcf1d9c3d4b"
}

这时,我们可以检查一下交易池,查看当前交易的待处理状况:

txpool.status
{
pending: 1,
queued: 0
}

耐心等待一段时间,等待矿工确认完成后,我们再次使用txpool.status命令查看交易池的状态:

txpool.status
{
pending: 0,
queued: 0
}

这就说明该条交易已经成功被处理了。

与合约交互
首先我们需要使用eth.contract来定义一个合约类,定义的合约类遵从ABI定义1:

Hello = eth.contract(contract.info.abiDefinition)
{
abi: [{
  constant: false,
  inputs: [],
  name: "hello",
  outputs: [{...}],
  payable: false,
  type: "function"

}],
eth: {

accounts: ["0x62b1746767522b36f6421e630fa0198151d72964", "0xaa79b5468a4f4cf35a32cc976f689a5db5873f0c"],
blockNumber: 623,
coinbase: "0x62b1746767522b36f6421e630fa0198151d72964",
compile: {
  lll: function(),
  serpent: function(),
  solidity: function()
},
defaultAccount: "0x62b1746767522b36f6421e630fa0198151d72964",
defaultBlock: "latest",
gasPrice: 20000000000,
hashrate: 3158,
mining: true,
pendingTransactions: [],
syncing: false,
call: function(),
contract: function(abi),
estimateGas: function(),
filter: function(fil, callback),
getAccounts: function(callback),
getBalance: function(),
getBlock: function(),
getBlockNumber: function(callback),
getBlockTransactionCount: function(),
getBlockUncleCount: function(),
getCode: function(),
getCoinbase: function(callback),
getCompilers: function(),
getGasPrice: function(callback),
getHashrate: function(callback),
getMining: function(callback),
getNatSpec: function(),
getPendingTransactions: function(callback),
getStorageAt: function(),
getSyncing: function(callback),
getTransaction: function(),
getTransactionCount: function(),
getTransactionFromBlock: function(),
getTransactionReceipt: function(),
getUncle: function(),
getWork: function(),
iban: function(iban),
icapNamereg: function(),
isSyncing: function(callback),
namereg: function(),
resend: function(),
sendIBANTransaction: function(),
sendRawTransaction: function(),
sendTransaction: function(),
sign: function(),
signTransaction: function(),
submitTransaction: function(),
submitWork: function()

},
at: function(address, callback),
getData: function(),
new: function()
}
然后得到合约实例:

hello = Hello.at(myContract.address)
{
abi: [{
  constant: false,
  inputs: [],
  name: "hello",
  outputs: [{...}],
  payable: false,
  type: "function"

}],
address: "0x67392c276e261d916243b7ba200d2c005d35ae57",
transactionHash: null,
allEvents: function(),
hello: function()
}
使用call()调用:

hello.hello.call()
"hello world!"

类似伊对视频相亲交友系统开发都有哪些功能?是什么样的盈利模式?
视频相亲盈利点:
1,添加好友,需要送礼物给对方。对方获得收益
2,直播相亲过程中,如需上麦,需要付费申请上麦。红娘获得收益
3,房间游客可以给麦上的嘉宾送礼物,嘉宾获得收益
4,麦上嘉宾可以给其他麦位的嘉宾和红娘送礼物,对方获得相应收益
5,直播间抢红包。
6,开通守护
7,分享赚钱,邀请好友,获得收益。

相关文章
DAPP合约系统开发逻辑技术丨DAPP成熟系统开发技术方案
动态调用允许调用者在运行时指定被调用合约及方法,无需预先知道接口。中断配置通常包括:启用外设中断、设置中断优先级分组和使能中断请求。NVIC_InitTypeDef结构体用于中断配置,包含中断源、抢占优先级、响应优先级和使能状态。中断源定义在IRQn_Type枚举中,如WWDG_IRQn、PVD_IRQn等。抢占优先级值依赖于优先级分组设定。
|
3月前
|
算法 大数据 分布式数据库
DAPP质押模式系统开发项目方案|DAPP合约开发案例
区块链技术是一种分布式数据库技术,它是由多个节点构成的去中心化网络
|
3月前
|
安全 区块链
DAPP模式系统开发设计方案丨DAPP合约系统开发技术方案
DAPP模式系统开发设计方案丨DAPP合约系统开发技术方案
|
9月前
|
人工智能 算法 安全
  DAPP互助模式开发?全合约逻辑详细开发方案
数字化时代的今天,互联网已经渗透到了生活的方方面面,人们对于网络互助模式的需求也日益增长。
|
4月前
|
安全 测试技术 区块链
“DApp智能合约开发:流程、难点与解决方案”
DApp(去中心化应用)是一种运行在区块链上的程序,旨在为用户提供一种去中心化的、安全的、抗审查的应用体验。
|
6月前
|
存储 安全 区块链
DAPP互助合约系统开发功能逻辑说明
DApp互助系统的开发指的是创建一个基于区块链技术和智能合约的去中心化应用程序(DApp),旨在通过互助和合作实现共同利益和社区发展。
|
8月前
|
安全 区块链
DAPP智能合约链游系统开发源码部署示例
  //SPDX-License-Identifier:MIT   pragma solidity^0.8.0;   contract Game{   //游戏合约的名称   string public name;   //游戏玩家的地址   mapping(address=>bool)public players;   //玩家的分数
|
9月前
|
区块链 存储
DAPP智能合约系统开发详细技术及方案项目
区块的作用就是将不同时间阶段内的交易数据按照一定的格式和数量,打包成结构化数据,方便存储和管理。
|
9月前
|
JavaScript 前端开发 Go
区块链Dapp智能合约系统开发(开发功能)丨dapp/defi代币合约项目系统开发成熟案例版及源码部署
The following are important technical points in the development process of smart contract DApp: