Code Monkey home page Code Monkey logo

crazygladiator's Introduction

CryptoGladiator

CryptoGladiator-API文档访问地址

一. 合约说明

角斗士项目中总共使用三个合约:sgas,NFT和Auction,其中sgas合约为NEL开发的通用合约,NFT和Auction 为我们自己开发。 NFT合约管理角斗士资源,以及克隆操作; Auction合约管理角斗士的拍卖,出租,购买和手续费扣取。 本项目所用合约均使用C#开发。

  1. Sgas.cs 作用:用于gas 和sgas之间1:1兑换。 由于合约里直接操作gas比较困难,所以需要玩家先将gas通过sgas合约转换为NEP5资产,合约里操控的是sgas资产,这样合约写起来会比较方便。
  2. NFT.cs 作用:管理角斗士资源,以及克隆操作。
  3. Auction.cs 作用:管理角斗士的拍卖,出租,购买和手续费扣取。

二. 常见问题:

  1. 如何获取我拥有的角斗士资产? 这个应该是由tokensOfOwner接口提供的,但是如果要在链上统计获取这些数据,角斗士比较多的时候,这个接口的手续费肯定是要超过10GAS的,所以该接口暂不支持。 现在我们的做法是在产生角斗士的时候,发出通知(ApplicationLog),后台监听到通知后,入后台数据库进行记录,在前端需要的时候由后台提供接口获取角斗士数据。
  2. 如何充值到拍卖行 玩家先将gas通过sgas合约,充值进入合约转换成sgas,再将sgas转账给拍卖合约所代表的钱包地址,最后将该转账的交易txid,传给Auction拍卖合约,Auction合约会去sgas合约里查询交易记录,看这笔记录是否转账成功以及转账金额,将该金额记录在拍卖合约的storage中,即充值成功。为避免重复充值,拍卖合约中会标记哪些txid已经处理过。
  3. 玩家在拍卖场里买东西为什么要提前充值到拍卖行 因为如果不提前充值到拍卖行,买东西的时候,合约没有办法主动扣除玩家的gas或者sgas。
  4. 关于结构体的序列化 2.7以后的版本支持使用Helper.Deserialize进行序列化,2.6的版本不支持该方法,目前测试网络的版本为2.6,主网的版本为2.7

三. 注意事项:

  1. 关于手续费 官方文档上说:“每个智能合约在每次执行过程中有10 GAS 的免费额度,无论是开发者部署还是用户调用,因此,单次执行费用在 10 GAS 以下的智能合约是不需要支付手续费的。当单次执行费用超过10 GAS,会减免10 GAS 的手续费。”。 我们在写智能合约时,应该控制合约单个执行函数的复杂度,尽量将手续费控制在10GAS以内,这样系统减免后就可以免费调用。 为了将手续费控制在10GAS以内, Storage.Put调用的次数在一个调用内尽量不要超过6个;尽量避免遍历读取storage里的数据;尽量避免在循环里多次调用一个复杂的私有函数。
  2. 关于数据类型 智能合约中没有string类型,使用Byte字节数组来表示string,不要将int等类型转换为string,不支持该操作; 智能合约中数值类型只有BigInteger,最终也被存储为ByteArray。C#中的byte,int,long等都会被自动编译成BigInteger类型。 智能合约中不支持C#的浮点小数,可以使用BigInteger表示的定点小数,需要约定小数位数。 C#合约中的结构体,不支持自定义构造函数,不支持在其中自定义成员函数。
  3. 其他常见错误: 不要在智能合约中定义类变量,不支持;可以定义类常量。

crazygladiator's People

Contributors

cwt8898 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.