开发

开发

在区块链时代,你觉得一个Dapp由一个业余志愿者团队维护好呢?还是由一个全职专业团队维护好呢?

暗朝 回复了问题 • 13 人关注 • 13 个回复 • 1173 次浏览 • 2019-12-09 15:58 • 来自相关话题

都在说区块链1.0,2.0,3.0甚至4.0,我想知道的是这个几点0是如何区分的呢?有什么实际意义吗?

区块小魔方 回复了问题 • 10 人关注 • 10 个回复 • 1122 次浏览 • 2019-12-01 09:54 • 来自相关话题

走读Cocos-BCX Android钱包源码(三)转账与查账篇

imcocos 发表了文章 • 0 个评论 • 10421 次浏览 • 2019-11-20 13:10 • 来自相关话题

走读Cocos-BCX Android钱包源码(二)钱包创建、登录上一篇我们讲了如何使用Android代码Cocos-BCX Android w ...查看全部

走读Cocos-BCX Android钱包源码(二)钱包创建、登录

上一篇我们讲了如何使用Android代码Cocos-BCX Android wallet的钱包创建、登录流程。这一篇继续来解读转账的流程和查询账户历史账单代码~

转账相关的类文件:

TransferActivity、OrderConfirmViewModel


在TransferActivity类的第146行-265行,都是转账的流程。

首先检查收款人是否为空且不能自己给自己转帐,设置转账数量,调用了COCOS SDK中的get_account_object方法查询转账的账户是否存在,若账户存在,则弹出输入密码的弹框。

当用户输入完密码,调用transfer_calculate_fee方法计算出本次转账所需要的手续费,且调用lookup_asset_symbols方法,查看账户内余额是否足以满足支付转账的手续费。


将手续费等信息显示到界面中(OrderConfirmViewModel),用户点击转账按钮后,调用了transfer方法,对此笔交易进行了转账。转账成功弹出提示。


在转账的过程中,依次调用了4个COCOS SDK 中的方法,他们是:

get_account_object(查询某账户是否在链上存在)

transfer_calculate_fee(查询本次转账所需手续费)

lookup_asset_symbols(查询帐号某种代币余额)

transfer(链上转账)

知道了这些API的使用,大家赶紧动手试试吧,来写自己的Java版的COCOS链上转账流程~

那么如何查对方收到你的转账了呢?


在DealRecordViewModel的126-149行中,使用get_account_history方法查询了某个账户的历史交易信息,拿到数据就可以把你查询到的某个账户的历史交易信息渲染到页面上了~




接下来,IMCOCOS会带大家继续走读COCOS Android钱包的源码,我们不见不散哦~
 

更多惊喜,请添加IMCOCOS官方客服小姐姐微信(imcocos01)进群交流。(不定期空投COCOS Token)

IMCOCOS由知名团队ImNodes开发和运营。作为首款Cocos-BCX生态的资讯门户网站,以最快的速度给用户展示最全的COCOS动态、专题资讯、生态导航等官方和非官方资讯,致力于跟踪整个COCOS与链游生态的发展。官网:imcocos.com

(若转载文章,请保留出处与品牌露出,否则追究到底)

解决区块链铁三角问题的分片技术到底能不能实现???

区块链卡咩 回复了问题 • 13 人关注 • 12 个回复 • 1171 次浏览 • 2019-11-13 10:41 • 来自相关话题

什么是智能合约?所谓的智能合约怎么执行啊?

xiaodao 回复了问题 • 13 人关注 • 12 个回复 • 1013 次浏览 • 2019-11-05 22:55 • 来自相关话题

【技术周报】Cocos-BCX 技术周报第39期

hicocos 发表了文章 • 1 个评论 • 7376 次浏览 • 2019-10-28 16:11 • 来自相关话题


COCOS 1024程序员节 活动

hicocos 发表了文章 • 2 个评论 • 7425 次浏览 • 2019-10-24 17:39 • 来自相关话题

COCOS联合我们发福利拉!今天是1024程序员节,我们发起一个30s发布智能合约领COCOS豪礼的活动,扫码参加就能领COCOS、纪念证书以及限量版T恤,小白也能轻松搞定,超简单的~你赶紧来领吧!(前50名转发朋友圈 ...查看全部

COCOS联合我们发福利拉!

今天是1024程序员节,我们发起一个30s发布智能合约领COCOS豪礼的活动,扫码参加就能领COCOS、纪念证书以及限量版T恤,小白也能轻松搞定,超简单的~你赶紧来领吧!

(前50名转发朋友圈的登记可获得COCOS哦~http://t.cn/Ai3dTBMp


POS是什么意思?

xiaoai 回复了问题 • 3 人关注 • 2 个回复 • 564 次浏览 • 2019-10-23 13:30 • 来自相关话题

Cocos-BCX链游开发攻略2——调试与数据订阅

imcocos 发表了文章 • 4 个评论 • 6756 次浏览 • 2019-10-23 08:23 • 来自相关话题

作者简介:Rojam,Cocos开发助手特邀专栏作者,区块链与分布式应用技术研究者,算法工程师,软件工程学硕士,曾参与EOS主网启动过程并编写了《低消耗EOS测试网络组网方案》。接着上一篇文章: ...查看全部

作者简介:Rojam,Cocos开发助手特邀专栏作者,区块链与分布式应用技术研究者,算法工程师,软件工程学硕士,曾参与EOS主网启动过程并编写了《低消耗EOS测试网络组网方案》。


接着上一篇文章:Cocos-BCX链游开发攻略1——账户与合约
在完成合约开发并且通过Cocos开发助手得知如何通过SDK调用合约接口后,最重要的工作就是调试和改进合约,因此本期Cocos-BCX链游开发攻略就紧接上一次,针对合约调试与链上事件订阅展开。
在正式开始前,笔者发现Cocos-Terminal的推荐应用迎来了一系列更新,引入了包括ContractIDE合约编辑器(http://contract-ide.com)和COCOS资产设计工具(http://cocosnft.com)在内的一系列开发工具:



从这两个应用的设计中不难看出这正是Cocos-Terminal集成的合约编辑器/资产设计工具的技术来源,相比Terminal中的集成版本,独立版本的应用有更完善的功能和更友好的用户体验,本次开发攻略中的合约调试与改进就将结合ContractIDE和Cocos开发助手进行。


1.追溯合约版本

从开发者文档中我们得知Cocos-BCX的合约是支持版本更新的,而合约在被调用时始终是它最新的版本,而根据区块链系统的特性,合约的历史版本一定会存在于链记录中,我们可以使用Cocos开发助手查询这些历史版本。
首先,在查询合约的当前版本:



从返回的结果中可以看到代表着当前合约版本的字段:


current_version:"cf1717cc6f0a6179f54a8539c4b4882e3d29aa7740ba0ca690efe00b4221ee16"


不难看出这是代表着发布这一版本合约代码的事务TxID,在事务查询页面http://cocos-toolkit.com/#/components/findTransaction查询这个ID,可以得到:



其中红色框内的返回信息代表更新合约操作,黄色框则是合约上一版本发布时的事务ID,反复查询历史ID最终可以看到最早的合约版本:



红框部分的操作内容和名称都已变为“创建合约”,代表这就是合约最早的版本展开下文的“raw_data”字段,就可以查看到当时版本的合约代码了。


2.调试、改进合约


进入ContractIDE并登陆,可以在左上角列表处看到上次攻略中我们发布的升级测试合约,与之前不同的是,在右侧多出一个列表,可以看到这些都是合约与链交互的常用函数,包括之前合约中已经使用过的random函数和log函数等,尝试了一下之后发现这是一个快速代码编辑功能:



点击右侧列表中的函数,这个函数的范例就自动插入了文本编辑器的光标处,这对不太熟悉合约函数的开发者来说方便了不少。
在左下接口列表中选择执行合约的test_item_upgrade,确认事务后在文本编辑区下方的区域列出了事务内容和类似命令行代码的文字,看起来非常类似Visual Studio的命令行指令:



尝试使用命令行交互,可以看到提示,键入“help”可以获得帮助:



可以看到命令行下支持的各项调用,这些命令甚至很多是链上交互的接口,包括转账、资产查询、世界观创建等。
指令输入过程中有补全和用法提示:



测试执行最简单的转账指令“transferAsset test1 1”,可以看到执行结果:



输入queryTransaction指令查询这条TxID,得到了事务的详细信息:



接下来开始修改之前的升级函数,使合约能够修改非同质资产的数据段,把升级信息保留在资产中。这里实际上需要在函数中增加chainhelper:nht_describe_change方法:



此外,假设合约管理员日后希望能够重新设置升级的成功率,也就是能够配置public_data.success_rate,那么就需要编写一个简单的接口reset_success_rate(new_rate)来配置,当然这个接口不能由合约管理者以外的用户使用,这里就需要用到chainhelper:is_owner()方法来判断合约的调用者的身份,写好的函数如下:

function reset_success_rate(new_rate)

assert(chainhelper:is_owner(),'This is an admin only interface.') --把init函数存在链上的数据读取出来
read_list={public_data={accuracy=true,success_rate=true}}
chainhelper:read_chain()
public_data.success_rate = new_rate
write_flag = true
write_list = {public_data = {accuracy = true, success_rate = true}}
chainhelper:write_chain()
end

调用一下,可以看到合约数据区内代表成功率的success_rate字段已经更新:



接下来测试改进后的合约,由于新的升级接口涉及到转账操作,而收款人默认就是合约拥有者,所以这里新申请一个账号用来测试。
先从非同质资产商店http://cocos-terminal.com/?#/shop-nh-asset中购买两个炸弹道具:


展开详情,可以看到炸弹道具的基础数据:



此时来到合约调试页面,找到这份合约,输入资产信息并调用升级接口:



升级成功,此时在ID为4.2.16的道具的数据中就会出现{"item_id":"4.2.16","msg":"upgrade success","success":1,"level":"3"}的内容:



从账户历史记录中同样可以看到合约事务的记录:



值得注意的是,包括执行升级的转账和修改道具数据的事务,全部被打包封装到了TxID为9b2df2c85c8c99a186e9a7e4a4b73cd9a9f6008612aeb09c5441176898766ffb的事务中,即这些操作被合并成了一个原子事务,感兴趣的读者可以在浏览器http://cocos-terminal.com/?#/block-trx/9b2df2c85c8c99a186e9a7e4a4b73cd9a9f6008612aeb09c5441176898766ffb 中查看事务详情。


3.订阅链上事件

对于游戏应用,后台服务通常需要及时更新数据,但轮询链上数据显然是一种非常没有效率而且性能极差的方式,好在Cocos-BCX提供了基于事件推送的订阅机制,从Cocos开发助手上的介绍来看包括两种订阅:区块事件订阅与交易事件订阅。


打开http://cocos-toolkit.com/#/components/subscribeBlock,可以看到这是区块事件的订阅说明,展开代码范例,可以看到订阅方法的代码实现:



在点击“立即订阅”注册订阅事件后,可以即时收到出块事件的推送,如下图所示:



在区块事件包含的基本数据有:
    block_num: 块序号
    block_height: 块高度
    block_id: 块ID
    witness: 见证人ID
    timestamp: 出块时间戳(UTC时间)
    trx_count: 块内包含的交易数
    time: 出块时间(本地时间)
    witness_name: 见证人名称


相比按高度遍历区块的方式,通过解析事件数据获得块状态的方法显然非常高效和便捷。
再来看订阅区块链交易的方法http://cocos-toolkit.com/#/components/blockchainTrading,如开发助手所示,这个方法是订阅全网的交易信息,这里的交易不仅仅是转账交易,也包括合约事务和非同质资产操作等,订阅时返回的信息如下:



不难看出交易信息的推送频率与出块频率一致,这个可以很容易的理解,在以出块为确认标志的区块链网络中,只有经过共识确认后的事务才会被认为是生效的,因此事务生效的周期也就和出块周期一致了。



以收到的创建账户事件为例,可以看到返回的数据中包含了操作类型、操作人、操作影响范围等要素,这些都能够作为业务服务解析并筛选需要数据的关键词,为提高链内外数据交互效率产生重要作用。
在本期文章中我们已经初步完善了一份可以操作非同质资产的合约,下期我们将尝试创造自己的同质和非同质数字资产,并参与到合约的使用中。

  (文章仅代表作者观点,由Cocos开发助手供稿)

走读Cocos-BCX Android钱包源码(二)钱包创建、登录

imcocos 发表了文章 • 1 个评论 • 6790 次浏览 • 2019-10-21 11:06 • 来自相关话题

走读Cocos-BCX Android钱包源码(一)上一篇我们讲了如何使用Android代码连接COCOS节点, ...查看全部

走读Cocos-BCX Android钱包源码(一)

上一篇我们讲了如何使用Android代码连接COCOS节点,那么这一篇我们带大家走读Cocos-BCX Android wallet的钱包创建、登录部分的代码。
 
首先我们打开我们的AS,打开Cocos-BCX Android wallet项目,在module_login部分就是我们所说的钱包创建、登录模块。
 
注册钱包涉及到的类有:
RegisterActivity(注册钱包页面)
RegisterViewModel(注册钱包Model层)
 
登录钱包涉及到的类有:
KeyLoginActivity(使用私钥登录钱包页面)
KeyLoginViewModel(使用私钥登录钱包Model层)
PasswordLoginActivity(使用账户模式登录钱包页面)
PasswordLoginViewModel(使用账户模式登录钱包Model层)
 

  
我们先来看第一部分,创建钱包,COCOS的钱包种类一共有两种,一种是账户模式,一种是钱包模式,钱包模式下注册,仅支持私钥登录,而账户模式下注册,可支持账号及私钥两种登录方式。

  

我们看代码,AccountType有两种,一种是AccountType.WALLET,另一种是AccountType.ACCOUNT,这两种模式公用的一个注册 register()方法,


在代码的145行中,我们对密码限定了一个校验规则。他的正则是"^(?!^\\d+$)(?!^[A-Za-z]+$)(?!^[^A-Za-z0-9]+$)(?!^.*[\\u4E00-\\u9FA5].*$)^\\S{8,12}$",所有条件匹配后,才调用的SDK中的方法 CocosBcxApiWrapper.getBcxInstance().create_account(),请求网络,你的COCOS钱包就创建好了。
 


再看第二部分,登录钱包,上面我们讲到创建钱包的种类有两种,那么登录钱包的也是一定有两种形式的,账户模式和钱包模式:
在KeyLoginViewModel中,代码64-119行是使用钱包模式登录的关键步骤,它调用了CocosBcxApiWrapper.getBcxInstance().import_wif_key()方法,使用私钥进行登录钱包。
 

  
而在PasswordLoginViewModel中,代码63-95行是使用账户模式登录的关键步骤,它调用了CocosBcxApiWrapper.getBcxInstance().password_login()方法来进行的登录。
 
以上就是我们走读的登录注册钱包的所有代码了,怎么样,大家是不是还没有读尽兴,别着急,下期很快就来,那我们现在留下课后作业,大家赶紧拿起手中的键盘,自己动手试试吧。看看自己是不是也能通过上面三个SDK中的方法创建、登录COCOS钱包呢?
 
接下来,IMCOCOS会带大家继续走读COCOS Android钱包的源码,我们不见不散哦~
 

更多惊喜,请添加IMCOCOS官方客服小姐姐微信(imcocos01)进群交流。(不定期空投COCOS Token)

IMCOCOS由知名团队ImNodes开发和运营。作为首款Cocos-BCX生态的资讯门户网站,以最快的速度给用户展示最全的COCOS动态、专题资讯、生态导航等官方和非官方资讯,致力于跟踪整个COCOS与链游生态的发展。官网:imcocos.com

(若转载文章,请保留出处与品牌露出,否则追究到底)

条新动态, 点击查看
这个我翻阅了下文档:使用过比特币转账的小伙伴应该都知道,比特币网络转账速度非常慢,以太坊网络频繁拥堵已经被很多人诟病,而比特币网络的拥堵情况比起以太坊网络而言,有过之而无不及,区块链网络的拥堵必然会导致转账到款时间缓慢,转账手续费高昂等问题。比特币的区块大小是... 显示全部 »
这个我翻阅了下文档:使用过比特币转账的小伙伴应该都知道,比特币网络转账速度非常慢,以太坊网络频繁拥堵已经被很多人诟病,而比特币网络的拥堵情况比起以太坊网络而言,有过之而无不及,区块链网络的拥堵必然会导致转账到款时间缓慢,转账手续费高昂等问题。比特币的区块大小是1M字节,待验证的区块数量越来越多,交易处理的效率自然越来越低,严重影响比特币的交易体验,而隔离见证的提出就是为了解决这个问题。隔离见证有的地方也说成隔离验证,其英文全名为Segregated Witness,缩写为Segwit,其实就是将验证信息隔离,然后单独处理验证信息。举个例子说明:坐过飞机的小伙伴应该都知道,飞机上大件行李是不允许随身携带的,必须在登机之前去大件行李处托运,那为什么要这样做呢?假如我们每个人坐飞机时都随身携带大件行李,那么在过安检时会减慢大家排队的效率,因为还需要检查大件行李。而且如果是特别大件的行李,还有可能要卡在安检很久。这就相当于矿工验证某些有多重签名的交易,需要花费很长的时间。如果,我们坐飞机时,每个人都是这样操作,而且民航局还同意的话,那么机舱的座位肯定装不了多少人,登机和下机的效率也会大大降低。所以,我们坐飞机的通常做法是将大件行李和人分开过安检。这样的做法就是坐飞机的效率提高了,机舱的座位也能充分利用——只坐乘客,不放行李,而行李托运仓也能存放更多的行李。这就是隔离见证的好处。隔离见证是为了让区块链承载更多的交易量而设计的,区块上的信息分为交易信息和见证信息。交易信息就是谁给谁在什么时间转了多少钱。见证信息就是哪个节点在什么时间验证交易信息的可靠性。中本聪在设计比特币的时候直接把这两个信息放在了区块内,其中见证信息占了大概三分之二的空间,所以一个区块就承载不了更多的交易信息,但是普通的用户只需要知道交易信息就可以了,见证信息只有矿工需要验证。如此一来,我们可以把见证信息从区块里拿出来,放到另一个空间,统一交由矿工验证,区块里只记录交易信息,那么在不改变区块大小的前提下,区块里也可以承载更多的交易信息了。从而达到了区块扩容的目的,提高了比特币区块里网络的交易效率,加快了交易速度,也降低了交易手续费。隔离见证已经在比特币和莱特币上成功实施。以下是本人亲自使用隔离见证在比特币测试链上的打包:(左边的是隔离见证,含有wtxinwitness;右边的是普通不含隔离见证)可以明显对比出来,左边的数据会少很多

COCOS 1024程序员节 活动

hicocos 发表了文章 • 2 个评论 • 7425 次浏览 • 2019-10-24 17:39 • 来自相关话题

COCOS联合我们发福利拉!今天是1024程序员节,我们发起一个30s发布智能合约领COCOS豪礼的活动,扫码参加就能领COCOS、纪念证书以及限量版T恤,小白也能轻松搞定,超简单的~你赶紧来领吧!(前50名转发朋友圈 ...查看全部

COCOS联合我们发福利拉!

今天是1024程序员节,我们发起一个30s发布智能合约领COCOS豪礼的活动,扫码参加就能领COCOS、纪念证书以及限量版T恤,小白也能轻松搞定,超简单的~你赶紧来领吧!

(前50名转发朋友圈的登记可获得COCOS哦~http://t.cn/Ai3dTBMp


cocos有哪些开源项目可以学习?

hicocos 回复了问题 • 3 人关注 • 2 个回复 • 1072 次浏览 • 2019-09-25 11:18 • 来自相关话题

在区块链时代,你觉得一个Dapp由一个业余志愿者团队维护好呢?还是由一个全职专业团队维护好呢?

回复

暗朝 回复了问题 • 13 人关注 • 13 个回复 • 1173 次浏览 • 2019-12-09 15:58 • 来自相关话题

都在说区块链1.0,2.0,3.0甚至4.0,我想知道的是这个几点0是如何区分的呢?有什么实际意义吗?

回复

区块小魔方 回复了问题 • 10 人关注 • 10 个回复 • 1122 次浏览 • 2019-12-01 09:54 • 来自相关话题

解决区块链铁三角问题的分片技术到底能不能实现???

回复

区块链卡咩 回复了问题 • 13 人关注 • 12 个回复 • 1171 次浏览 • 2019-11-13 10:41 • 来自相关话题

什么是智能合约?所谓的智能合约怎么执行啊?

回复

xiaodao 回复了问题 • 13 人关注 • 12 个回复 • 1013 次浏览 • 2019-11-05 22:55 • 来自相关话题

POS是什么意思?

回复

xiaoai 回复了问题 • 3 人关注 • 2 个回复 • 564 次浏览 • 2019-10-23 13:30 • 来自相关话题

一直不知道,智能合约为啥不可篡改,有没有人通俗的帮忙讲解一下。

回复

油炸风扇 回复了问题 • 8 人关注 • 10 个回复 • 1616 次浏览 • 2019-10-11 10:37 • 来自相关话题

只有区块链技术正式普及到大众,在应用层面推广开来,作为区块链驱动的衍生品交易所才能真正的实现走进大众日常中?

回复

park 回复了问题 • 8 人关注 • 11 个回复 • 607 次浏览 • 2019-10-08 10:04 • 来自相关话题

COCOS和EOS相比,有哪些缺点?或者说有哪些可以改进的地方呢?

回复

做空发财 回复了问题 • 2 人关注 • 1 个回复 • 1098 次浏览 • 2019-10-01 19:08 • 来自相关话题

比特币里的简单支付验证是什么?谁能跟我讲清楚呀?

回复

pvkpgp 回复了问题 • 3 人关注 • 2 个回复 • 1067 次浏览 • 2019-10-01 13:03 • 来自相关话题

走读Cocos-BCX Android钱包源码(三)转账与查账篇

imcocos 发表了文章 • 0 个评论 • 10421 次浏览 • 2019-11-20 13:10 • 来自相关话题

走读Cocos-BCX Android钱包源码(二)钱包创建、登录上一篇我们讲了如何使用Android代码Cocos-BCX Android w ...查看全部

走读Cocos-BCX Android钱包源码(二)钱包创建、登录

上一篇我们讲了如何使用Android代码Cocos-BCX Android wallet的钱包创建、登录流程。这一篇继续来解读转账的流程和查询账户历史账单代码~

转账相关的类文件:

TransferActivity、OrderConfirmViewModel


在TransferActivity类的第146行-265行,都是转账的流程。

首先检查收款人是否为空且不能自己给自己转帐,设置转账数量,调用了COCOS SDK中的get_account_object方法查询转账的账户是否存在,若账户存在,则弹出输入密码的弹框。

当用户输入完密码,调用transfer_calculate_fee方法计算出本次转账所需要的手续费,且调用lookup_asset_symbols方法,查看账户内余额是否足以满足支付转账的手续费。


将手续费等信息显示到界面中(OrderConfirmViewModel),用户点击转账按钮后,调用了transfer方法,对此笔交易进行了转账。转账成功弹出提示。


在转账的过程中,依次调用了4个COCOS SDK 中的方法,他们是:

get_account_object(查询某账户是否在链上存在)

transfer_calculate_fee(查询本次转账所需手续费)

lookup_asset_symbols(查询帐号某种代币余额)

transfer(链上转账)

知道了这些API的使用,大家赶紧动手试试吧,来写自己的Java版的COCOS链上转账流程~

那么如何查对方收到你的转账了呢?


在DealRecordViewModel的126-149行中,使用get_account_history方法查询了某个账户的历史交易信息,拿到数据就可以把你查询到的某个账户的历史交易信息渲染到页面上了~




接下来,IMCOCOS会带大家继续走读COCOS Android钱包的源码,我们不见不散哦~
 

更多惊喜,请添加IMCOCOS官方客服小姐姐微信(imcocos01)进群交流。(不定期空投COCOS Token)

IMCOCOS由知名团队ImNodes开发和运营。作为首款Cocos-BCX生态的资讯门户网站,以最快的速度给用户展示最全的COCOS动态、专题资讯、生态导航等官方和非官方资讯,致力于跟踪整个COCOS与链游生态的发展。官网:imcocos.com

(若转载文章,请保留出处与品牌露出,否则追究到底)

【技术周报】Cocos-BCX 技术周报第39期

hicocos 发表了文章 • 1 个评论 • 7376 次浏览 • 2019-10-28 16:11 • 来自相关话题


COCOS 1024程序员节 活动

hicocos 发表了文章 • 2 个评论 • 7425 次浏览 • 2019-10-24 17:39 • 来自相关话题

COCOS联合我们发福利拉!今天是1024程序员节,我们发起一个30s发布智能合约领COCOS豪礼的活动,扫码参加就能领COCOS、纪念证书以及限量版T恤,小白也能轻松搞定,超简单的~你赶紧来领吧!(前50名转发朋友圈 ...查看全部

COCOS联合我们发福利拉!

今天是1024程序员节,我们发起一个30s发布智能合约领COCOS豪礼的活动,扫码参加就能领COCOS、纪念证书以及限量版T恤,小白也能轻松搞定,超简单的~你赶紧来领吧!

(前50名转发朋友圈的登记可获得COCOS哦~http://t.cn/Ai3dTBMp


Cocos-BCX链游开发攻略2——调试与数据订阅

imcocos 发表了文章 • 4 个评论 • 6756 次浏览 • 2019-10-23 08:23 • 来自相关话题

作者简介:Rojam,Cocos开发助手特邀专栏作者,区块链与分布式应用技术研究者,算法工程师,软件工程学硕士,曾参与EOS主网启动过程并编写了《低消耗EOS测试网络组网方案》。接着上一篇文章: ...查看全部

作者简介:Rojam,Cocos开发助手特邀专栏作者,区块链与分布式应用技术研究者,算法工程师,软件工程学硕士,曾参与EOS主网启动过程并编写了《低消耗EOS测试网络组网方案》。


接着上一篇文章:Cocos-BCX链游开发攻略1——账户与合约
在完成合约开发并且通过Cocos开发助手得知如何通过SDK调用合约接口后,最重要的工作就是调试和改进合约,因此本期Cocos-BCX链游开发攻略就紧接上一次,针对合约调试与链上事件订阅展开。
在正式开始前,笔者发现Cocos-Terminal的推荐应用迎来了一系列更新,引入了包括ContractIDE合约编辑器(http://contract-ide.com)和COCOS资产设计工具(http://cocosnft.com)在内的一系列开发工具:



从这两个应用的设计中不难看出这正是Cocos-Terminal集成的合约编辑器/资产设计工具的技术来源,相比Terminal中的集成版本,独立版本的应用有更完善的功能和更友好的用户体验,本次开发攻略中的合约调试与改进就将结合ContractIDE和Cocos开发助手进行。


1.追溯合约版本

从开发者文档中我们得知Cocos-BCX的合约是支持版本更新的,而合约在被调用时始终是它最新的版本,而根据区块链系统的特性,合约的历史版本一定会存在于链记录中,我们可以使用Cocos开发助手查询这些历史版本。
首先,在查询合约的当前版本:



从返回的结果中可以看到代表着当前合约版本的字段:


current_version:"cf1717cc6f0a6179f54a8539c4b4882e3d29aa7740ba0ca690efe00b4221ee16"


不难看出这是代表着发布这一版本合约代码的事务TxID,在事务查询页面http://cocos-toolkit.com/#/components/findTransaction查询这个ID,可以得到:



其中红色框内的返回信息代表更新合约操作,黄色框则是合约上一版本发布时的事务ID,反复查询历史ID最终可以看到最早的合约版本:



红框部分的操作内容和名称都已变为“创建合约”,代表这就是合约最早的版本展开下文的“raw_data”字段,就可以查看到当时版本的合约代码了。


2.调试、改进合约


进入ContractIDE并登陆,可以在左上角列表处看到上次攻略中我们发布的升级测试合约,与之前不同的是,在右侧多出一个列表,可以看到这些都是合约与链交互的常用函数,包括之前合约中已经使用过的random函数和log函数等,尝试了一下之后发现这是一个快速代码编辑功能:



点击右侧列表中的函数,这个函数的范例就自动插入了文本编辑器的光标处,这对不太熟悉合约函数的开发者来说方便了不少。
在左下接口列表中选择执行合约的test_item_upgrade,确认事务后在文本编辑区下方的区域列出了事务内容和类似命令行代码的文字,看起来非常类似Visual Studio的命令行指令:



尝试使用命令行交互,可以看到提示,键入“help”可以获得帮助:



可以看到命令行下支持的各项调用,这些命令甚至很多是链上交互的接口,包括转账、资产查询、世界观创建等。
指令输入过程中有补全和用法提示:



测试执行最简单的转账指令“transferAsset test1 1”,可以看到执行结果:



输入queryTransaction指令查询这条TxID,得到了事务的详细信息:



接下来开始修改之前的升级函数,使合约能够修改非同质资产的数据段,把升级信息保留在资产中。这里实际上需要在函数中增加chainhelper:nht_describe_change方法:



此外,假设合约管理员日后希望能够重新设置升级的成功率,也就是能够配置public_data.success_rate,那么就需要编写一个简单的接口reset_success_rate(new_rate)来配置,当然这个接口不能由合约管理者以外的用户使用,这里就需要用到chainhelper:is_owner()方法来判断合约的调用者的身份,写好的函数如下:

function reset_success_rate(new_rate)

assert(chainhelper:is_owner(),'This is an admin only interface.') --把init函数存在链上的数据读取出来
read_list={public_data={accuracy=true,success_rate=true}}
chainhelper:read_chain()
public_data.success_rate = new_rate
write_flag = true
write_list = {public_data = {accuracy = true, success_rate = true}}
chainhelper:write_chain()
end

调用一下,可以看到合约数据区内代表成功率的success_rate字段已经更新:



接下来测试改进后的合约,由于新的升级接口涉及到转账操作,而收款人默认就是合约拥有者,所以这里新申请一个账号用来测试。
先从非同质资产商店http://cocos-terminal.com/?#/shop-nh-asset中购买两个炸弹道具:


展开详情,可以看到炸弹道具的基础数据:



此时来到合约调试页面,找到这份合约,输入资产信息并调用升级接口:



升级成功,此时在ID为4.2.16的道具的数据中就会出现{"item_id":"4.2.16","msg":"upgrade success","success":1,"level":"3"}的内容:



从账户历史记录中同样可以看到合约事务的记录:



值得注意的是,包括执行升级的转账和修改道具数据的事务,全部被打包封装到了TxID为9b2df2c85c8c99a186e9a7e4a4b73cd9a9f6008612aeb09c5441176898766ffb的事务中,即这些操作被合并成了一个原子事务,感兴趣的读者可以在浏览器http://cocos-terminal.com/?#/block-trx/9b2df2c85c8c99a186e9a7e4a4b73cd9a9f6008612aeb09c5441176898766ffb 中查看事务详情。


3.订阅链上事件

对于游戏应用,后台服务通常需要及时更新数据,但轮询链上数据显然是一种非常没有效率而且性能极差的方式,好在Cocos-BCX提供了基于事件推送的订阅机制,从Cocos开发助手上的介绍来看包括两种订阅:区块事件订阅与交易事件订阅。


打开http://cocos-toolkit.com/#/components/subscribeBlock,可以看到这是区块事件的订阅说明,展开代码范例,可以看到订阅方法的代码实现:



在点击“立即订阅”注册订阅事件后,可以即时收到出块事件的推送,如下图所示:



在区块事件包含的基本数据有:
    block_num: 块序号
    block_height: 块高度
    block_id: 块ID
    witness: 见证人ID
    timestamp: 出块时间戳(UTC时间)
    trx_count: 块内包含的交易数
    time: 出块时间(本地时间)
    witness_name: 见证人名称


相比按高度遍历区块的方式,通过解析事件数据获得块状态的方法显然非常高效和便捷。
再来看订阅区块链交易的方法http://cocos-toolkit.com/#/components/blockchainTrading,如开发助手所示,这个方法是订阅全网的交易信息,这里的交易不仅仅是转账交易,也包括合约事务和非同质资产操作等,订阅时返回的信息如下:



不难看出交易信息的推送频率与出块频率一致,这个可以很容易的理解,在以出块为确认标志的区块链网络中,只有经过共识确认后的事务才会被认为是生效的,因此事务生效的周期也就和出块周期一致了。



以收到的创建账户事件为例,可以看到返回的数据中包含了操作类型、操作人、操作影响范围等要素,这些都能够作为业务服务解析并筛选需要数据的关键词,为提高链内外数据交互效率产生重要作用。
在本期文章中我们已经初步完善了一份可以操作非同质资产的合约,下期我们将尝试创造自己的同质和非同质数字资产,并参与到合约的使用中。

  (文章仅代表作者观点,由Cocos开发助手供稿)

走读Cocos-BCX Android钱包源码(二)钱包创建、登录

imcocos 发表了文章 • 1 个评论 • 6790 次浏览 • 2019-10-21 11:06 • 来自相关话题

走读Cocos-BCX Android钱包源码(一)上一篇我们讲了如何使用Android代码连接COCOS节点, ...查看全部

走读Cocos-BCX Android钱包源码(一)

上一篇我们讲了如何使用Android代码连接COCOS节点,那么这一篇我们带大家走读Cocos-BCX Android wallet的钱包创建、登录部分的代码。
 
首先我们打开我们的AS,打开Cocos-BCX Android wallet项目,在module_login部分就是我们所说的钱包创建、登录模块。
 
注册钱包涉及到的类有:
RegisterActivity(注册钱包页面)
RegisterViewModel(注册钱包Model层)
 
登录钱包涉及到的类有:
KeyLoginActivity(使用私钥登录钱包页面)
KeyLoginViewModel(使用私钥登录钱包Model层)
PasswordLoginActivity(使用账户模式登录钱包页面)
PasswordLoginViewModel(使用账户模式登录钱包Model层)
 

  
我们先来看第一部分,创建钱包,COCOS的钱包种类一共有两种,一种是账户模式,一种是钱包模式,钱包模式下注册,仅支持私钥登录,而账户模式下注册,可支持账号及私钥两种登录方式。

  

我们看代码,AccountType有两种,一种是AccountType.WALLET,另一种是AccountType.ACCOUNT,这两种模式公用的一个注册 register()方法,


在代码的145行中,我们对密码限定了一个校验规则。他的正则是"^(?!^\\d+$)(?!^[A-Za-z]+$)(?!^[^A-Za-z0-9]+$)(?!^.*[\\u4E00-\\u9FA5].*$)^\\S{8,12}$",所有条件匹配后,才调用的SDK中的方法 CocosBcxApiWrapper.getBcxInstance().create_account(),请求网络,你的COCOS钱包就创建好了。
 


再看第二部分,登录钱包,上面我们讲到创建钱包的种类有两种,那么登录钱包的也是一定有两种形式的,账户模式和钱包模式:
在KeyLoginViewModel中,代码64-119行是使用钱包模式登录的关键步骤,它调用了CocosBcxApiWrapper.getBcxInstance().import_wif_key()方法,使用私钥进行登录钱包。
 

  
而在PasswordLoginViewModel中,代码63-95行是使用账户模式登录的关键步骤,它调用了CocosBcxApiWrapper.getBcxInstance().password_login()方法来进行的登录。
 
以上就是我们走读的登录注册钱包的所有代码了,怎么样,大家是不是还没有读尽兴,别着急,下期很快就来,那我们现在留下课后作业,大家赶紧拿起手中的键盘,自己动手试试吧。看看自己是不是也能通过上面三个SDK中的方法创建、登录COCOS钱包呢?
 
接下来,IMCOCOS会带大家继续走读COCOS Android钱包的源码,我们不见不散哦~
 

更多惊喜,请添加IMCOCOS官方客服小姐姐微信(imcocos01)进群交流。(不定期空投COCOS Token)

IMCOCOS由知名团队ImNodes开发和运营。作为首款Cocos-BCX生态的资讯门户网站,以最快的速度给用户展示最全的COCOS动态、专题资讯、生态导航等官方和非官方资讯,致力于跟踪整个COCOS与链游生态的发展。官网:imcocos.com

(若转载文章,请保留出处与品牌露出,否则追究到底)

IMCOCOS 9月技术月报

imcocos 发表了文章 • 0 个评论 • 6625 次浏览 • 2019-10-19 09:12 • 来自相关话题

IMCOCOS由知名团队ImNodes开发和运营。作为首款Cocos-BCX生态的资讯门户网站,以最快的速度给用户展示最全的COCOS动态、专题资讯、生态导航等官方和非官方资讯,致力于跟踪整个COCOS与链游生态的发展。官网: ...查看全部

IMCOCOS由知名团队ImNodes开发和运营。作为首款Cocos-BCX生态的资讯门户网站,以最快的速度给用户展示最全的COCOS动态、专题资讯、生态导航等官方和非官方资讯,致力于跟踪整个COCOS与链游生态的发展。官网:imcocos.com

以下是IMCOCOS 9月的技术月报:

Android APP端:

1、对已知Bug进行修复;

2、新增选择从相册内扫描二维码的入口; 

3、对读文章页进行了UI方面的优化; 

4、优化了首页启动速度;

5、优化识别二维码流程;

6、新增js调用native方法 :显示、隐藏右上角分享按钮方法。


iOS APP端:

1、对已知Bug进行修复;

2、对读文章页进行了UI方面的优化; 

3、优化了首页启动速度;

4、优化识别二维码流程;

5、新增js调用native方法 :显示、隐藏右上角分享按钮方法;

6、去除AppStore过审核代码。


Web和服务器端:

1、COCOS红包功能完成和测试并上线

2、优化App下载页面,增加iOS展示

3、管理端增加cdn

4、增加快讯搜索功能

5、修复红包功能iOS端点击等bug

6、网页细节样式优化

Cocos Pay 火狐版上线,无障碍支持基本钱包功能与 DApp 调用

hicocos 发表了文章 • 0 个评论 • 7120 次浏览 • 2019-10-15 18:50 • 来自相关话题

据 IMCOCOS 报道,近日,Cocos-BCX 测试网插件钱包 Cocos Pay 火狐版上线,Cocos Pay 火狐版支持基本钱包功能和 DApp 调用。作为 COCOS Bounty 任务之一,Cocos Pay 火狐版目前被认领 ...查看全部

据 IMCOCOS 报道,近日,Cocos-BCX 测试网插件钱包 Cocos Pay 火狐版上线,Cocos Pay 火狐版支持基本钱包功能和 DApp 调用。

作为 COCOS Bounty 任务之一,Cocos Pay 火狐版目前被认领并成功完成,更多 COCOS Bounty 任务可在官网 Cocos-BCX 对应页面 https://bounty.cocosbcx.io/TaskRelease 上找到并认领。

Cocos-BCX 是下一代游戏数字经济平台,提供完整游戏开发工具的同时,配备有更完善公链生态,致力于在游戏领域构建更友好、便捷的区块链技术应用解决方案。

今年6月6日,Cocos-BCX 正式宣布开启测试网1.0版本“冈仁波齐”公测,6月21日,Cocos-BCX 正式启动首期2.1亿枚 COCOS 的生态激励计划,同时面向全球开放生态合伙人计划,共同建设 Cocos-BCX 测试网生态。

点我下载体验Cocos Pay火狐版!



走读Cocos-BCX Android钱包源码(一)

imcocos 发表了文章 • 1 个评论 • 6910 次浏览 • 2019-10-13 15:41 • 来自相关话题

Hi,大家好,经过十月一长假,你已过完2019所有法定假日,在普天同庆迎国庆的日子里,有没有忘记学习区块链相关的知识呢?没有也不要紧哦, ...查看全部

Hi,大家好,经过十月一长假,你已过完2019所有法定假日,在普天同庆迎国庆的日子里,有没有忘记学习区块链相关的知识呢?没有也不要紧哦,现在一起跟着IMCOCOS来走读下Cocos-BCX中的Android钱包:AndroidWallet项目吧,在这一篇中,我们将会学习到在Android项目中,如何连接到COCOS节点。

首先从github通过git clone方法下载源码到本地

Cocos-BCX AndroidWallet项目地址:https://github.com/Cocos-BCX/AndroidWallet

使用我们的Android studio打开它,项目是使用阿里的Arouter框架实现的组件化架构,


从上图我们可以得知项目的整体架构:

- app:项目的宿主模块,仅仅是一个空壳,依赖于其他模块,成为项目架构的入口。

- library_base、library_res:项目的基类库,每个子模块都依赖共享公用的类和资源,防止公用的功能在不同的模块中有多个实现方式。

- module_asset:资产模块。

- module_found:发现模块。

- module_login:登陆注册模块。

- module_mine:我的模块。

- module_zxing:二维码识别模块。

- cocos_sdk:COCOS的SDK。


关于多语言的支持,打开res里的values和values-en文件夹查看,COCOS Android钱包项目目前是支持两种语言的:英文和中文,各位开发者可以通过新建values包来增加COCOS钱包的多语言支持。

下面让我们看一下COCOS钱包在Android中是如何连接的COCOS节点的:


代码93-94行,首先对请求服务器获取了COCOS的节点信息列表,接口是:http://backend.test.cjfan.net/getParams


目前COCOS在测试网阶段,我们通过访问api得知,现只有两个节点在运行。


代码97-101行,如果获取COCOS节点信息列表接口请求失败时,会走到onErrorInit方法,使用曾经缓存过的节点进行连接(如图所示)。


代码102-127行,会对从服务器获取的COCOS节点信息列表进行遍历,进行对节点信息的缓存,并调用init方法初始化连接节点(如图所示代码163-170行)。

在init方法中,使用了COCOS的SDK中的方法CocosBcxApiWrapper.getBcxInstance().connect(),连接上了节点。


通过以上几步,我们的Android APP客户端就成功的连接上了COCOS的测试网节点了,怎么样,是不是很简单呢,赶紧自己动手试试吧!

在最后,小编为大家准备了COCOS Android的SDK github地址:https://github.com/Cocos-BCX/AndroidSdk ,供大家下载并且引用至项目中使用。


接下来,IMCOCOS会带大家继续走读COCOS Android钱包的源码,我们不见不散哦~


更多惊喜,请添加IMCOCOS官方客服小姐姐微信(imcocos01)进群交流。(不定期空投COCOS Token)

IMCOCOS由知名团队ImNodes开发和运营。作为首款Cocos-BCX生态的资讯门户网站,以最快的速度给用户展示最全的COCOS动态、专题资讯、生态导航等官方和非官方资讯,致力于跟踪整个COCOS与链游生态的发展。官网:imcocos.com

(若转载文章,请保留出处与品牌露出,否则追究到底)

【Cocos-BCX 主办】游戏绿洲黑客松大赛印度站圆满结束

hicocos 发表了文章 • 3 个评论 • 7593 次浏览 • 2019-10-09 17:19 • 来自相关话题


2019年10月6日下午,为期两天的游戏绿洲黑客松大赛(Game Oasis Hackathon)印度站在班加罗尔正式落下帷幕,本次大赛由 Cocos-BCX,Matic, Binance Labs,Celer,Marlin,Contentos 和 MakerDao 七家机构共同主办,最终参与决赛的开发者共有200多名。

本次大赛允许开发者选择 Cocos-BCX,Matic,Marlin,Celer 其中一条公链,在20小时内完成开发作品。每条公链按照最初设定的奖励机制,评选基于各自链的参赛队伍作品。

Cocos-BCX 奖励机制

Cocos-BCX 产品负责人向参赛者介绍奖励机制: 

A)基于 Cocos-BCX 链开发游戏,并使用 Cocos-BCX 账户体系。一等奖励$500,二等奖励$250

B)游戏采用 Cocos-BCX 链内随机数解决方案。一等奖励$500,二等奖励$250。

C)游戏运行的智能合约采用 Cocos-BCX Lua 虚拟机编写。一等奖励$500,共两名;二等奖励$250,共两名。

基于 Cocos-BCX 链如何开发区块链游戏

为方便参赛队伍快速且简单上手基于 Cocos-BCX 开发区块链游戏,Cocos-BCX 产品负责人向大家讲解并播放游戏开发视频,对此感兴趣的开发者也欢迎查看哟。(需要翻墙)

https://www.youtube.com/watch?v=nl2uymTg7mg

奖励情况

在经过20小时紧锣密鼓开发后,近26支队伍提交了最终作品。下面是基于 Cocos-BCX 链获奖团队和游戏。

一等($ 500)

团队:Xpeainence

游戏:LEGEND OF ZIRCONIS

LEGEND OF ZIRCONIS 是一款基于 Unity 和 Cocos-BCX 的多人RPG游戏。该游戏基于最新的 Cocos Unity SDK 开发,支持 Cocos-BCX 链上支付。




二等 ($250)

团队:Sarchy

游戏:ElonToMars

ElonToMars 是一款基于 Cocos-BCX,并支持 Cocos-BCX 链上支付的区块链游戏。




特殊奖励($250)

团队: The Oasis

游戏:Pongchainers

Pongchainer 是一款基于 Cocos Creator 和 Cocos-BCX 链的休闲跳跃游戏。



团队:Enigma

游戏:Fishnetworking

Fishnetworking 是一款基于 Cocos-BCX 的游戏。玩家在注册时创建一条鱼,代表其环游世界。鱼需要水才能移动,所以玩家需要尽可能收集更多的水帮助鱼游动,这也将决定鱼的旅程长短。

所有鱼类的位置和来源都存储在区块链中,如一条鱼遇到另一条鱼并建立其网络关系时,信息也存储在区块链中。


团队: Hieroglyphics

游戏:Sphere Dash

Sphere Dash 是一款快节奏的球类游戏,具有两个版本(一个版本基于CelerX,另一个版本基于 Cococs-BCX),能够使玩家能够获得有趣而意犹未尽的感觉。



印度站之后, 下一站将在美国启动,详情将在后期公布。

除了上述获得奖金外,参与者将有机会与超过130万开发者的最大游戏开发者社区交流,包括开发了愤怒的小鸟、战斗、荒地和国际冲突的团队。Cocos-BCX 将凭借多年的游戏开发经验,随时准备为开发人员提供从技术到营销的全方位支持。

期待您的参与,欢迎报名参与(或点击原文):http://gameoasis.mikecrm.com/8MpTtw8


游戏绿洲黑客松大赛12支参赛队伍有7支选用Cocos-BCX链进行开发

hicocos 发表了文章 • 0 个评论 • 7061 次浏览 • 2019-09-22 10:03 • 来自相关话题

9月21日,Cocos-BCX 联合币安孵化器,Celer Network,Contentos,Matic Network和Dapp Review主办的“游戏绿洲黑客松大赛”正在上海火热进行。评委们将根据自己对区块链游戏的理解,从多个维度来 ...查看全部

9月21日,Cocos-BCX 联合币安孵化器,Celer Network,Contentos,Matic Network和Dapp Review主办的“游戏绿洲黑客松大赛”正在上海火热进行。

评委们将根据自己对区块链游戏的理解,从多个维度来进行评分,具体的评分体系将在赛前探讨会公布,包括但不限于:区块链结合程度、画面、玩法等等。参赛团队从中Cocos-BCX, Celer, Contentos这三条优秀公链中自由选择一条链来进行开发。

本次比赛前三名有现金奖励总计6万人民币,同时Cocos-BCX, Celer, Contentos 可另外提供赏金来激励参赛团队采用各自的链,bounty 形式由赞助方自己选择。

目前处于比赛第二日,当前有12支优秀区块链队伍参赛,其中7支选用Cocos-BCX主链。