原力元宇宙MetaForce佛萨奇马蹄莲系统开发详情及功能丨MetaForce佛萨奇马蹄莲开发成品源码案例

简介: 互联网是人类通信技术的重大革命,对人类社会产生了极其深远的影响。随着当前各类信息技术的迭代创新,互联网正呈现向下一代互联网演进的趋势。这一演进或将引发新一轮的信息革命,进一步深刻改变人们的生活、工作以及社会的方方面面。

Force是一个全球加密货币生态系统,其成员使用我们的智能合约即时利润分配工具和算法互相帮助以实现财务福利。

META FORCE系统属于我们的社区并且是完全去中心化的,这意味着它是透明的、安全的并且可以抵抗外部影响。

智能合约是一种自执行算法(程序代码)。它保证了在区块链内执行逻辑或传输的透明性和安全性。

原力元宇宙MetaForce是在Polygon马蹄链上部署的一个智能合约,Polygon马蹄链,是基于ETH开发的一个独立公链,用于构建和连接与以太坊兼容的区块链网络,智能合约可以直接在马蹄链上部署,百分百开源,百分百去中心化,一旦运行,不可篡改。本文由系统开发对接唯:MrsFu123编辑整理发布。

互联网是人类通信技术的重大革命,对人类社会产生了极其深远的影响。随着当前各类信息技术的迭代创新,互联网正呈现向下一代互联网演进的趋势。这一演进或将引发新一轮的信息革命,进一步深刻改变人们的生活、工作以及社会的方方面面。

4.2. 编写Solidity智能合约
4.2.1. 搭建开发环境
开发者无需自己搭建开发环境,可使用Remix在线IDE开发solidity合约。长安链对solidity完全兼容,使用Remix开发的或者以太坊生态内的solidity合约,可直接在长安链部署运行。

4.2.2. 代码编写规则
solidity语法和代码编写规则参见solidity官方开发文档:https://docs.soliditylang.org/

4.2.2.1. 长安链solidity与以太坊solidity的异同
长安链的solidity在内置接口、预编译合约和跨合约调用上,与以太坊有一些区别,具体参见本章节下,各分小节详细内容。

4.2.2.1.1. solidity 内置接口
solidity为开发者提供了一些内置接口,包括内置变量和函数,可在合约中直接使用。因为长安链为无币链,所以,与原生token相关的内置接口,多默认为0,详见以下内置接口说明。

//指定区块的区块哈希,已经不推荐使用,由 blockhash(uint blockNumber) 代替
block.blockhash(uint blockNumber) returns (bytes32)

//address类型,当前区块的出块节点地址,即 block 的 proposer
block.coinbase

//uint类型,当前区块难度,值固定为0
block.difficulty

//uint类型,当前区块 gas 限额
block.gaslimit

//uint类型,当前区块号
block.number

//uint类型,自 unix epoch 起始当前区块以秒计的时间戳
block.timestamp

//uint256类型,剩余的 gas
gasleft() returns

//bytes类型,完整的 calldata
msg.data

//uint类型,剩余 gas - 自 0.4.21 版本开始已经不推荐使用,由 gesleft() 代替
msg.gas

//address类型,消息发送者(当前调用)
msg.sender

//bytes4类型,calldata 的前 4 字节(也就是函数标识符)
msg.sig

//uint类型,随消息发送的 wei 的数量,值固定为0
msg.value

//uint类型,目前区块时间戳(block.timestamp)
now

//uint类型,交易的 gas 价格,值固定为1
tx.gasprice

//address类型,交易发起者
tx.origin

4.2.3. 合约示例源码展示
Token合约示例,实现功能ERC20

/*
SPDX-License-Identifier: Apache-2.0
*/
pragma solidity >0.5.11;
contract Token {

string public name = "token";      //  token name
string public symbol = "TK";           //  token symbol
uint256 public decimals = 6;            //  token digit

mapping (address => uint256) public balanceOf;
mapping (address => mapping (address => uint256)) public allowance;

uint256 public totalSupply = 0;
bool public stopped = false;

uint256 constant valueFounder = 100000000000000000;
address owner = address(0x0);

modifier isOwner {
    assert(owner == msg.sender);
    _;
}

modifier isRunning {
    assert (!stopped);
    _;
}

modifier validAddress {
    assert(address(0x0) != msg.sender);
    _;
}

constructor (address _addressFounder) {
    owner = msg.sender;
    totalSupply = valueFounder;
    balanceOf[_addressFounder] = valueFounder;
    
    emit Transfer(address(0x0), _addressFounder, valueFounder);
}

function transfer(address _to, uint256 _value) public isRunning validAddress returns (bool success) {
    require(balanceOf[msg.sender] >= _value);
    require(balanceOf[_to] + _value >= balanceOf[_to]);
    balanceOf[msg.sender] -= _value;
    balanceOf[_to] += _value;
    emit Transfer(msg.sender, _to, _value);
    return true;
}

function transferFrom(address _from, address _to, uint256 _value) public isRunning validAddress returns (bool success) {
    require(balanceOf[_from] >= _value);
    require(balanceOf[_to] + _value >= balanceOf[_to]);
    require(allowance[_from][msg.sender] >= _value);
    balanceOf[_to] += _value;
    balanceOf[_from] -= _value;
    allowance[_from][msg.sender] -= _value;
    emit Transfer(_from, _to, _value);
    return true;
}

function approve(address _spender, uint256 _value) public isRunning validAddress returns (bool success) {
    require(_value == 0 || allowance[msg.sender][_spender] == 0);
    allowance[msg.sender][_spender] = _value;
    emit Approval(msg.sender, _spender, _value);
    return true;
}

function stop() public isOwner {
    stopped = true;
}

function start() public isOwner {
    stopped = false;
}

function setName(string memory _name) public isOwner {
    name = _name;
}

function burn(uint256 _value) public {
    require(balanceOf[msg.sender] >= _value);
    balanceOf[msg.sender] -= _value;
    balanceOf[address(0x0)] += _value;
    emit Transfer(msg.sender, address(0x0), _value);
}

event Transfer(address indexed _from, address indexed _to, uint256 _value);
event Approval(address indexed _owner, address indexed _spender, uint256 _value);

}

相关文章
|
8月前
|
测试技术 开发工具 UED
什么是农场游戏系统开发规则玩法/详细需求/案例详情/源码项目
明确定义游戏概念和目标**: - 确定农场游戏系统的主题和核心玩法,明确目标用户群体,并设定明确的游戏目标和规则。
|
8月前
|
安全 区块链
区块链农场游戏系统开发运营版/玩法详情/规则方案/案例设计/项目源码
Developing a blockchain farm game system is an interesting and challenging task. Here is a design solution that can help you get started developing such a system
|
8月前
|
存储 人工智能 搜索推荐
东郊到家预约服务系统开发|成熟源码|详情方案
Web 3.0有可能像Web 2.0一样具有颠覆性并引领重大的范式转变
什么是互助预约排单系统开发丨dapp预约排单互助项目系统开发详细流程/规则方案/案例设计/逻辑功能/源码开发
Allow users to register accounts and perform identity verification to ensure the authenticity and credibility of user information.
|
6月前
|
缓存 前端开发 测试技术
什么是七星创客系统丨七星创客系统开发规则玩法/设计方案/逻辑需求/案例项目/源码功能
七星创客系统开发指南是一个帮助开发人员理解并完成七星创客系统的开发任务的指南。以下是一个简要的开发指南需求:
|
8月前
|
新零售 小程序
认养农业互助模式系统开发|详情逻辑|案例设计
新零售是线上与线下结合,组合的价值主要是线下为线上引流
|
8月前
|
新零售 人工智能 大数据
良久团购互助模式系统开发|指南详情|方案设计
讲这个问题之前,先看看什么是“零售”,零售是直接将商品或服务销售给个人消费者或最终消费者的商业活动
|
8月前
|
新零售 人工智能 大数据
东郊到家预约服务系统开发|现成案例|模式详情
由于线下门店的商品陈列和消费者行为发生在物理空间里,线下门店想收集数据似乎没那么容易
|
8月前
|
新零售 供应链 大数据
推三返一互助模式项目系统开发|指南方案|详情说明
有了大数据,运营者能够更全面地了解消费者,做到精准营销,能够细化经营指标,快速获得经营反馈
|
区块链
养鱼玩法元宇宙平台合约开发源码详情
function createFish(address player, FishType type) public returns (uint index) { Fish memory fish = Fish({ type: type, level: 1, experience: 0 });