DAPP丨NFT卡牌/盲盒/农场/对战/链游系统开发(运营版),DAPP丨NFT卡牌/盲盒/农场/对战/链游系统开发(案例及源码)

简介: 什么是智能合约?智能合约(smart-contract)实际上就是运行在以太坊网络中的一段代码。其最大的特点就是:自动执行、一旦部署就不可更改。智能合约这一特点,确保了写在合约里的全部功能,都能够按照逻辑执行。在以太坊部署智能合约之后,就意味着拥有了一段永不消失、自动执行的程度,随时能够与网络合约进行交互。智能合约类似于互联网里的TCP/IP协议,网络的传输运行完全按照协议标准执行。

  什么是智能合约?

  智能合约(smart-contract)实际上就是运行在以太坊网络中的一段代码。其最大的特点就是:自动执行、一旦部署就不可更改。智能合约这一特点,确保了写在合约里的全部功能,都能够按照逻辑执行。在以太坊部署智能合约之后,就意味着拥有了一段永不消失、自动执行的程度,随时能够与网络合约进行交互。智能合约类似于互联网里的TCP/IP协议,网络的传输运行完全按照协议标准执行。

  编写简单的智能合约:

  //SPDX-License-Identifier:MIT

  pragma solidity^0.6.0;

  contract Storage{

  struct People{

  string name;

  uint256 age;

  }

  People[]public people;

  function addPerson(string memory _name,uint256 _age)public{

  people.push(People(_name,_age));

  }

  }

  上述代码中,通过struct关键字定义了一个名为People的对象,该对象中有name与age两个属性,然后基于People对象,实例化了people数组,然后定义了addPerson函数,该方法会接收_name与_age参数,然后实例化People对象,最后将People对象添加到数组中。

  这里有个细节,就是参数_name是字符串,所以需要使用memory关键字标注一下。Solidity中,存储变量的方式有storage与memory两种。

  storage变量:永久存储在区块链中的变量

  memory变量:临时的,当外部函数对某合约调用完成时,内存型变量即被移除

  Solidity中的string的本质是字符数组(Char Array),如果你不通过memory声明,就算_name是函数参数,Solidity也会通过storage持续存储它。

  编译智能合约与连接本地区块链网络,

  创建名为【web3py_storage】的文件夹,然后在其中创建Storage.sol文件并将智能合约代码复制到文件中。

  通过vscode打开webpy_simple_storage文件夹,创建base.py,在base.py实现对智能合约的编译以及连接上区块链网络的操作。

  阅读web3.py智能合约相关的文档:https://web3py.readthedocs.io/en/stable/contracts.html

  通过文档可知,web3.py不支持solidity的编译,文档中建议我们安装py-solc-x库来实现solidity的编译,简单安装一下,然后通过install_solc方法来下载对应版本的solidity编译器。

  因为我们的智能合约使用了Solidity^0.6.0,所以下载0.6.0版本的solidity编译器则可,然后按文档的方式设置编译Solidity时的配置则可,相关代码如下:

  import os

  import json

  from web3 import Web3

  #编译solidity

  #https://github.com/iamdefinitelyahuman/py-solc-x

  from solcx import compile_standard,install_solc

  with open('./Storage.sol','r',encoding='utf-8')as f:

  storage_file=f.read()

  #下载0.6.0版本的Solidity编译器

  install_solc('0.6.0')

  #编译Solidity

  compiled_sol=compile_standard(

  {

  "language":"Solidity",

  #Solidity文件

  "sources":{"Storage.sol":{"content":storage_file}},

  "settings":{

  "outputSelection":{

  "*":{

  #编译后产生的内容

  "*":["abi","metadata","evm.bytecode","evm.bytecode.sourceMap"]

  }

  }

  },

  },

  #版本,与编写智能合约时Solidity使用的版本对应

  solc_version="0.6.0",

  )

  #编译后的结果写入文件

  with open('compiled_code.json','w')as f:

  json.dump(compiled_sol,f

  #智能合约编译后的字节码(上链的数据)

  bytecode=compiled_sol"contracts""Storage"[

  "bytecode"

  ]["object"]

  #ABI(Application Binary Interface),用于与智能合约中的方法进行交互的接口

  abi=json.loads(

  compiled_sol"contracts""Storage"

  )"output"

  bytecode:智能合约编译后的字节码,智能合约上链其实就是将这部分数据存储到区块链中。

  abi:我们的程序与智能合约交互的接口,它定义了我们的程序可以怎么与当前这个智能合约交互。

  至此,智能合约的编译流程就结束了,然后我们通过web3.py连接到以太坊中。

相关文章
|
11月前
|
机器学习/深度学习 人工智能 安全
关于Stepn跑鞋NFT链游系统开发技术逻辑|Stepn跑鞋NFT(成熟案例)
智能合约作为Web3下的核心概念from web3 import Web3
|
10月前
|
供应链 IDE 编译器
NFT元宇宙卡牌游戏链游系统开发(技术方案)
  智能合约可以简化交易流程并提高交易速度。它也可以用于供应链管理、资产追踪和其他领域。随着区块链技术的发展,智能合约将成为未来发展趋势之一
|
11月前
|
存储 安全 数据管理
|
12月前
|
存储 算法 安全
Stepn跑鞋链游质押NFT系统开发(成熟技术)案例搭建
mapping(uint=>string)public i2s;//position is 0
|
12月前
|
存储 前端开发 区块链
  NFT卡牌游戏系统开发(链游搭建)
 NFT卡牌游戏系统开发是一项复杂的任务,需要涉及多个方面的技术和知识。
|
存储 前端开发 安全
  从NFT链游到元宇宙:探索卡牌盲盒游戏源码开发
     随着区块链技术和元宇宙概念的兴起,卡牌盲盒游戏成为了数字娱乐领域的热门话题。
|
数据挖掘 区块链
  Stepn跑鞋系统开发/NFT跑鞋链游项目源码
随着跑步热的兴起,越来越多的人开始投入到跑步运动中来。
|
存储 机器学习/深度学习 JSON
关于Stepn跑步NFT链游开发系统搭建技术
  每个代币都有一个唯一的tokenURI,它在符合特定模式的JSON文件中包含您的资产的元数据。元数据是您存储有关NFT信息的地方,例如名称、图像、描述和其他属性。
关于Stepn跑步NFT链游开发系统搭建技术
|
传感器 编解码 边缘计算
NFT元宇宙卡牌丨盲盒丨农场丨对战区块链游戏链游系统开发(逻辑及规则),NFT元宇宙卡牌丨盲盒丨农场丨对战游戏链游源码功能
元宇宙的发展,从其重要组成部分交互和显示来看,VR要从2K、4K分辨率到视网膜级别(接近16K)的高清晰度,对端到端算力的需求提高数十倍,IT基础设施面临极大挑战。我们需要更大的云数据中心规模,更多的边缘计算,以及数以亿计的各类物理世界的设备端、传感器连接到互联网,共同支撑元宇宙的发展。
|
图形学
DAPP丨NFT卡牌/盲盒/农场/对战链游系统开发技术说明及详细源码
在mesh正常渲染结束后,再渲染一次,使用decal的shader,向shader中传入一个ClipToDecal的矩阵(=ClipToWorld*WorldToDecal),在FS中计算计算映射到decal框中的坐标,取决于具体的实现,可以将xy坐标作为uv,以及裁剪掉uv0~1之外的部分,将decal渲染出来.

热门文章

最新文章