ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:1.42MB ,
资源ID:7486040      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7486040.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Chaos智能合约测试案例计算机区块链.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Chaos智能合约测试案例计算机区块链.docx

1、Chaos智能合约测试案例计算机区块链ICO 合约案例说明1、 功能说明通过区块链智能合约项目 ico,用户可通过向智能合约里面发送区块链代币,合约会根据参与者的地址与参与金额,合约会自动把参与者发送的金额转到指定的地址,并给其参与者分配相应的权益份额,用于后续权益兑换。2、 合约开发部署流程A、 启动一个区块链节点/钱包B、编写智能合约代码代码如下:mylib = require mylibfunction Unpack(t, i) i = i or 1if ti thenreturn ti, Unpack(t, i + 1)endendfunction GetValueFromContra

2、ct(tbl, start, length) assert(start 0, GetValueFromContract start err) assert(length 0, GetValueFromContract length err) local newTab = local ifor i = 0, length - 1 do newTab1 + i = tblstart + iendreturn newTabendOPER_TYPE = ENUM_ADD_FREE = 1, ENUM_MINUS_FREE = 2APP_OPERATOR_TYPE = ENUM_ADD_FREE_OP

3、= 1, ENUM_SUB_FREE_OP = 2, ENUM_ADD_FREEZED_OP = 3, ENUM_SUB_FREEZED_OP = 4ADDR_TYPE = ENUM_REGID = 1, ENUM_BASE58 = 2local funs = - 众筹funs1 = function()local moneyTbl = mylib.GetCurTxPayAmount() local money = mylib.ByteToInteger(Unpack(moneyTbl) assert(money 0, invalid money num) print(金额:, money)l

4、ocal appRecharge = operatorType = APP_OPERATOR_TYPE.ENUM_ADD_FREE_OP, outHeight = 0, moneyTbl = moneyTbl, userIdLen = 34, userIdTbl = mylib.GetBase58Addr(mylib.GetCurTxAccount() , fundTagLen = 0, fundTagTbl = assert(mylib.WriteOutAppOperate(appRecharge), failed to zc)local appRecharge = operatorType

5、 = APP_OPERATOR_TYPE.ENUM_ADD_FREE_OP, outHeight = 0, moneyTbl = moneyTbl, userIdLen = 6, userIdTbl = mylib.GetScriptID() , fundTagLen = 0, fundTagTbl = assert(mylib.WriteOutAppOperate(appRecharge), failed to add app)local dataTbl = addrType = ADDR_TYPE.ENUM_REGID,operatorType = OPER_TYPE.ENUM_MINUS

6、_FREE, accountIdTbl = mylib.GetScriptID(),moneyTbl = moneyTbl, outHeight = 0assert(mylib.WriteOutput(dataTbl), failed to minus)local dataTbl2 = addrType = ADDR_TYPE.ENUM_BASE58, operatorType = OPER_TYPE.ENUM_ADD_FREE,accountIdTbl = 0x54, 0x46, 0x67, 0x47, 0x4d, 0x64, 0x65, 0x74, 0x37, 0x75, 0x43, 0x

7、70, 0x54, 0x36, 0x5a, 0x46, 0x4a, 0x67, 0x50, 0x6d, 0x43, 0x4b, 0x6e, 0x73, 0x6d, 0x39, 0x70, 0x41, 0x48, 0x33, 0x34, 0x5a, 0x4b, 0x6b,moneyTbl = moneyTbl, outHeight = 0assert(mylib.WriteOutput(dataTbl2), failed to add)end- 返回结果print(合约执行完成)return funscontract2 and funscontract2() or trueC、在智能合约界面部署

8、合约注意:这一步会消耗一定量的币,返回一个交易 ID,等到下一个区块产生后,可通过这个交易 ID 查询合约 ID,所有跟合约相关的操作都会用到这个合约 ID。部署:获取合约 ID:参与众筹:指定调用的智能合约,也就是之前得到的合约 ID,参与人的地址,参与金额,合约内容:ff01 表示参与众筹,点击创建,即会创建一笔合约交易,如果参与者有足够的金额,这笔交易会在下一个区块被确认。查询份额:通过合约 ID、地址,可查询参与 ico 所得份额,返回的 json 字符串,FreeValues为用户所持份额。流程图如下:证券发行合约案例说明1、功能说明:证券发行,资产冻结,分期解冻。3、 合约开发部署

9、流程:A、 启动一个区块链节点/钱包B、编写智能合约代码代码如下:mylib = require mylibLOG_TYPE =ENUM_STRING = 0, ENUM_NUMBER = 1, ;OPER_TYPE =ENUM_ADD_FREE = 1, ENUM_MINUS_FREE = 2 APP_OPERATOR_TYPE =ENUM_ADD_FREE_OP = 1, ENUM_SUB_FREE_OP = 2,ENUM_ADD_FREEZED_OP = 3, ENUM_SUB_FREEZED_OP = 4 ADDR_TYPE =ENUM_REGID = 1, ENUM_BASE58 =

10、 2, TX_TYPE =TX_WITHDRAW = 1, TX_RECHARGE = 2, FREEZE_MONTH_NUM = 20 FREEZE_PERIOD = 5MAX_MONEY = 100000000000000000 FREE_MONEY = 10000000000000000 gCheckAccount = truegSendAccountTbl = 0x00, 0x00, 0x00, 0x00, 0x01, 0x00function TableIsEmpty(t) return _G.next(t) = nilendfunction TableIsNotEmpty(t) r

11、eturn false = TableIsEmpty(t)endfunction LogPrint(aKey, bLength, cValue) assert(bLength = 1, LogPrint bLength invlaid) if (aKey = LOG_TYPE.ENUM_STRING) thenassert(type(cValue) = string, LogPrint cValue invlaid0) elseif (aKey = LOG_TYPE.ENUM_NUMBER) thenassert(TableIsNotEmpty(cValue), LogPrint cValue

12、 invlaid1)elseerror(LogPrint aKey invlaid)endlocal logTable = key = LOG_TYPE.ENUM_STRING, length = 0,value = nillogTable.key = aKey logTable.length = bLength logTable.value = cValue mylib.LogPrint(logTable)endfunction Unpack(t, i) i = i or 1if ti thenreturn ti, Unpack(t, i + 1)endendfunction MemCmp(

13、tDest, tSrc, start1)assert(TableIsNotEmpty(tDest), tDest is empty) assert(TableIsNotEmpty(tSrc), tSrc is empty) local ifor i = #tDest, 1, -1 doif tDesti tSrci + start1 - 1 then return 1elseif tDesti 0, GetValueFromContract start err) assert(length 0, GetValueFromContract length err) local newTab = l

14、ocal ifor i = 0, length - 1 do newTab1 + i = tblstart + iendreturn newTabendfunction Recharge()local toAddrTbl = toAddrTbl = GetValueFromContract(contract, 3, 34) local moneyTbl = moneyTbl = GetValueFromContract(contract, 37, 8) local money = mylib.ByteToInteger(Unpack(moneyTbl) assert(money 0, mone

15、y 0, freeMoney 0, freeMonthMoney 0, payMoney = 0)assert(money = payMoney, 充值金额不正确 1) if money 1or money freeMoneyor money = MAX_MONEYor freeMoney = FREE_MONEYor freeMonthMoney = FREE_MONEY then LogPrint(LOG_TYPE.ENUM_STRING, string.len(充值金额不正确 3), 充值金额不正确 3);error(充值金额不正确 3)endlocal freezeNum = FREE

16、ZE_MONTH_NUM - 1 assert(freezeNum 0, 月冻结总数不正确)local freezeMoney = freeMonthMoney * freezeNum if freezeMoney freezeNumor freezeMoney freeMoney or money 0, Account balance is 0.)local appOperateTbl = operatorType = 0, outHeight = 0, moneyTbl = ,userIdLen = 0, userIdTbl = , fundTagLen = 0,fundTagTbl =

17、appOperateTbl.operatorType = APP_OPERATOR_TYPE.ENUM_SUB_FREE_OP appOperateTbl.userIdLen = idTbl.idLenappOperateTbl.userIdTbl = idTbl.idValueTbl appOperateTbl.moneyTbl = freeMoneyTblassert(mylib.WriteOutAppOperate(appOperateTbl), WriteOutAppOperate err1) assert(WriteWithdrawal(accountTbl, freeMoneyTb

18、l), WriteWithdrawal err)return trueendfunction Main()assert(#contract = 2, contract length err.) assert(contract1 = 0xff, Contract identification error.)if contract2 = TX_TYPE.TX_RECHARGE then assert(#contract = 60, recharge contract length err.) Recharge()elseif contract2 = TX_TYPE.TX_WITHDRAW then assert(#contract = 11, withdraw contract length err.) Withdraw(contract3)elseerror(RUN_SCRIPT_DATA_ERR

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1