使用百度链的智能合约来落地公司业务场景(3)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 使用百度链的智能合约来落地公司业务场景(3)

通过xdev可执行命令来测试


dev工具是随xuperchain发布的一个合约编译和测试工具


先来运行下官方给的例子 熟悉下流程和确保运行环境没有问题



咱们目前的环境是最新版的master版本


使用默认的方式启动的 nohup ./xchain &


使用 xdev 测试c++语言合约


  • 配置环境变量


export PATH=$HOME/xuperchain/output:$PATH
export XDEV_ROOT=$HOME/xuperchain/core/contractsdk/cpp
注意这里配置的是cpp目录


  • 初始化代码


xdev init hello-cpp


image.png


目录结构和图【空白模版】是对应的


  • 编译


cd hello-cpp
xdev build -o hello.wasm


  • 部署下合约


./xchain-cli wasm deploy --account XC1111111111111111@xuper --cname hello  --fee 5200000 --runtime c ./hello-cpp/hello.wasm


  • 调用合约


./xchain-cli wasm invoke --method hello --fee 110000 hello


  • 测试


xdev test


image.png


合约部署和调用都可以通过


使用xdev测试go语言存证模版合约


  • 编译


cd xuperchain/core/contractsdk/go/example/eleccert
GOOS=js GOARCH=wasm go build -o hello.wasm


  • 合约部署


./xchain-cli wasm deploy --account XC1111111111111111@xuper --cname hello  --fee 5200000 --runtime go ./hello-go/hello.wasm
此时会报错使得当前节点挂掉


梳理下问题现象


1、当前节点环境是通过 nohup ./xchain & 方式启动的


2、通过wsam部署方式部署c++合约对应的合约文件是可以的


3、通过wsam部署方式部署go合约对应的合约文件是不可以的 会导致节点挂掉


调整启动方式


nohup ./xchain --vm ixvm &


然后再执行上面的部署命令是可以的


结论


目前版本可能还不支持没有指定--vm ixvm虚拟机的情况下通过wasm的方式部署go语言合约


还有一种可能是上面配置的环境变量配置的是cpp 这里是不是需要配置成go?朋友们感兴趣的话 可以尝试下


  • 测试


image.png


下面咱通过同样的方式部署下咱们自定义的存证的智能合约


1、先对go源码文件编译生成hello.wasm文件


2、复制到 hello-go 文件夹


3、执行 xdev test命令


image.png


此时心里十万个茶叶蛋飞奔而过


我辛辛苦苦使用xdev测试我的合约文件 想找出里面是哪里的代码有问题 但你却告诉我这种结构,遂“含恨”放弃这种方式


第三种方式 是通过vscode来编译源码文件


这种方式就不演示了 原理就是用的xdev命令对源码进行编译(build)和测试(test)

因为我对vscode编译go不太熟 所以这里简单的记录下步骤 以免下次用vscode再对go编译的时候看看这里就知道了


1、打开vscode 添加add workspace 工作目录 指定一个文件夹 该文件夹下面包含go源码文件


2、Terminal-Configure Tasks-create task.json


{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "xdev build",
            "type": "shell",
            "command": "xdev build -p",
            "options": {
                "cwd": "${workspaceFolder}"
            },
            "group": {
                "kind": "build",
                "isDefault": true
            }
        },
        {
            "label": "xdev test",
            "type": "shell",
            "command": "xdev test",
            "options": {
                "cwd": "${workspaceFolder}"
            }
        }
    ]
}


3、然后Terminal-run Build Task 的时候也一直报错 说找不到 XDEV_ROOT,XCHAIN_ROOT环境变量


因为我知道原理就是利用的xdev来做的,我对xdev已经不抱什么希望了,所以就没有再去解决这个问题


后来转变了下方向 终于找到了适合的方向


比较合适的方法【推荐】


我一开始想着既然是合约源码有问题,那么在源码文件中添加一些日志,然后一行一行的进行定位不就可以找到问题代码了吗,后来看了下存证模版源码文件中没有输出日志的代码 所以我就没有采用这种方式


大家可以试下 添加写日志文件 然后去logs/contract.log日志文件中找下日志

我最终采用的方式是:


1、一份存证模版文件源码 这个肯定是没有问题的


2、我基于模版文件源码新写的一份文件


我在想在模版文件中添加了这么多代码 第一次执行肯定会有问题的

类似于“步子垮大了 容易扯蛋”,“一口不能吃下一个大胖子”


那么我将新增的代码一点一点的放入模版文件,每次放入都会经历编译、部署、调用执行的过程 确保每次新增的代码没有问题,遂很快的解决了这个问题


手续费去向问题


通过节点账户调用合约发起交易,那么手续费来源节点账户,目的账户是出块节点账户吗

咱们查看交易详情


./xchain-cli tx query 1fcc2d5cc2e6bad345a21d14871bd641167c44b5a5ac69076d3095458ed94784


image.png


不查不知道 一查吓一跳 请看蓝色字体


1、来源账户余额不止这个数 怎么是 1000000



2、目的账户怎么是$


大家是不是在担心账户余额要是不够了,是不是发起不了交易了?

这个担心是多余的


原因:


  • 因为当前节点是出块节点,每次出块都会有奖励, 每次奖励的金额可以调整 如果担心的话 可以调大点


  • 再一个就是定时出块机制 每隔3秒出一次奖励一次


  • 初始金额可以调大些


还不放心的话 可以多个节点账户做备用账户 若一个账户余额不够了 则使用其他的账户来发起合约交易(当然需要对应账户下面的合约账户部署的合约喽)


上面遗留的2个问题 咱们下回分解哦


自定义合约文件源码地址


https://gitee.com/pingfanrenbiji/xuper-java-sdk/blob/master/src/test/resources/com/baidu/xuperunion/api/eleccert.g
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
人工智能 自然语言处理 自动驾驶
破壁人AI百度:科技公司反内卷的典型样本
互联网整个行业都在陷入被动且尴尬的局面。去年开始流行的“内卷”一词,恰如其分的描述了互联网的现状,比如抖音开始做外卖,微信强推视频号,一直硝烟弥漫的电商市场,更是激战在社区团购上
167 0
破壁人AI百度:科技公司反内卷的典型样本
|
人工智能 自然语言处理 自动驾驶
破壁人AI百度:科技公司反内卷的典型样本
互联网整个行业都在陷入被动且尴尬的局面。去年开始流行的“内卷”一词,恰如其分的描述了互联网的现状,比如抖音开始做外卖,微信强推视频号,一直硝烟弥漫的电商市场,更是激战在社区团购上。
175 0
破壁人AI百度:科技公司反内卷的典型样本
|
人工智能 自然语言处理 自动驾驶
破壁人 AI 百度:科技公司反内卷的典型样本
互联网整个行业都在陷入被动且尴尬的局面。去年开始流行的“内卷”一词,恰如其分的描述了互联网的现状,比如抖音开始做外卖,微信强推视频号,一直硝烟弥漫的电商市场,更是激战在社区团购上。
破壁人 AI 百度:科技公司反内卷的典型样本
|
人工智能 自然语言处理 自动驾驶
破壁人AI百度:科技公司反内卷的典型样本
互联网整个行业都在陷入被动且尴尬的局面。去年开始流行的“内卷”一词,恰如其分的描述了互联网的现状,比如抖音开始做外卖,微信强推视频号,一直硝烟弥漫的电商市场,更是激战在社区团购上。
破壁人AI百度:科技公司反内卷的典型样本
|
人工智能 自然语言处理 自动驾驶
破壁人AI百度:科技公司反内卷的典型样本
互联网整个行业都在陷入被动且尴尬的局面。去年开始流行的“内卷”一词,恰如其分的描述了互联网的现状,比如抖音开始做外卖,微信强推视频号,一直硝烟弥漫的电商市场,更是激战在社区团购上。
130 0
破壁人AI百度:科技公司反内卷的典型样本
|
人工智能 自然语言处理 自动驾驶
破壁人AI百度:科技公司反内卷的典型样本
互联网整个行业都在陷入被动且尴尬的局面。去年开始流行的“内卷”一词,恰如其分的描述了互联网的现状,比如抖音开始做外卖,微信强推视频号,一直硝烟弥漫的电商市场,更是激战在社区团购上。 内卷背后也有人感慨,互联网到了尽头。支撑这一论述的是,移动互联网的人口红利已经消失,几款国民型APP用户增长都固定在了10亿这个级别,只能依靠自然人口的增长和迁移。
128 0
破壁人AI百度:科技公司反内卷的典型样本
|
人工智能 自然语言处理 自动驾驶
破壁人AI百度:科技公司反内卷的典型样本
互联网整个行业都在陷入被动且尴尬的局面。去年开始流行的“内卷”一词,恰如其分的描述了互联网的现状,比如抖音开始做外卖,微信强推视频号,一直硝烟弥漫的电商市场,更是激战在社区团购上。 内卷背后也有人感慨,互联网到了尽头。支撑这一论述的是,移动互联网的人口红利已经消失,几款国民型APP用户增长都固定在了10亿这个级别,只能依靠自然人口的增长和迁移。 这一幕如同刘慈欣小说《三体》里所描述的,智子封锁的地球科技一样,被信息干扰,或引导至错误方向发展,困在原地,做困兽之斗,无法自拔。
破壁人AI百度:科技公司反内卷的典型样本
|
Go 区块链 C++
使用百度链的智能合约来落地公司业务场景(2)
使用百度链的智能合约来落地公司业务场景(2)
150 0
使用百度链的智能合约来落地公司业务场景(2)
|
JSON Java Go
使用百度链的智能合约来落地公司业务场景(1)
使用百度链的智能合约来落地公司业务场景(1)
161 0
使用百度链的智能合约来落地公司业务场景(1)
|
Java Go 区块链
在百度超级链Xuper上部署智能合约并实现存证功能(3)
在百度超级链Xuper上部署智能合约并实现存证功能(3)
505 0
在百度超级链Xuper上部署智能合约并实现存证功能(3)

热门文章

最新文章