首页 > 其他 > 详细

fibos开发踩坑集合

时间:2019-04-17 22:47:55      阅读:259      评论:0      收藏:0      [点我收藏+]

语法方面:

1、abi文件 type都是小写

2、js变量名不能有大写字母

3、

其他:

1、FIBOS 账户有2种原生权限:

  owner 拥有超级权限,代表着账户的归属者,因为拥有此权限者可以用于操作其他权限配置,该权限常用事务中(转账、合约 action 等)一般不会使用

  active 常用业务的权限,比如:转账、投票等。

2、合约部署在哪个账户上,调用合约内函数时就需要该账户的授权

  var ctx = fibosClient.contractSync(合约账户名);

  let i = ctx.payforvotingSync(参数,参数,..,{

    authorization:合约账户名

  });

3、inline action与 eoiso.code

  inlilne内部调用,简单来说一个合约的代码调用另外一个智能合约的函数,最常用的场景是在合约内部调用 Token 合约进行转账操作。

  例:

  技术分享图片

  引:eoiso.code这一特殊权限是dawn4.0后新增的内部特殊权限,用来加强inline action的安全性。
  比如alice调用智能合约contract.test,一开始alice看过contract.test的逻辑,发现它只是一个打印函数,并不会调用其他合约。
  所以alice以自己active的权限alice@active去执行contract.test。
  但是contract的拥有者某一天可能偷偷更改了test的实现,在test函数中调用eosio.token的transfer函数以alice@active权限就可以取走alice的EOS.
  为了解决权限乱用问题,EOS新增了eosio.code这个特殊权限。
  采用eosio.code后,contract.test要以alice@active去调用eosio.token,必须得到alice的授权,即必须在alice@active里添加contrac@eosio.code授权。

  若没有授权,则报错:

  "message":"/voteaccount1/index.js:19:8
  trans.send_inline(\"eosio.token\", \"transfer\", {
  Error: 3090003 unsatisfied_authorization: Provided keys, permissions, and delays do not satisfy declared authorizations
  transaction declares authority ‘{\"actor\":\"liusihao1314\",\"permission\":\"active\"}‘, but does not have signatures for it under a provided delay of 0 ms,
  provided permissions [{\"actor\":\"voteaccount1\",\"permission\":\"eosio.code\"}], provided keys [], and a delay max limit of 3888000000 ms

  授权如下:

  技术分享图片

  注:actor表示action的调用者吗,permission表示actor需要的权限

4、on_xxx 是监听 action 事件的用法

  例如合约里写on_extransfer 方法,并部署到合约账户上,这表示在合约里会监听 extransfer 这个 action 方法里给这个合约账户发的通知

 5、合约部署时上传abi接口文件合约js文件到合约账户,若在合约文件里引用其他文件,会报错,因为合约账户里不存在这个文件

技术分享图片

技术分享图片

6、未完待续

fibos开发踩坑集合

原文:https://www.cnblogs.com/lsh0908/p/10721586.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!