如何保证不操纵智能合约的输入?

时间:2018-07-30 22:26:15

标签: asch-development sidechain-technology asch decentralized-applications

假设我的DApp获得了以下(智能)合同:

module.exports = {
  winner: async function(value) {

    if (value===10) {

        } 
  } 
}

现在,Dapp用户可以使用某些value来调用合同,而10可以是value,也可以不是。 Dapp确定10是否等于PUT。到目前为止一切顺利。

但是现在看来,具有有效机密(并且有些XAS发送到Dapps的侧链)的任何人都可以通过向api/<dappId>//transactions/unsigned设置value的简单value请求来调用合同无论他们想要什么。

如何确保enum的值由Dapp设置并且不能被操纵?

1 个答案:

答案 0 :(得分:1)

据我所知,Asch DApps在启用了cors中间件的快速服务器上运行,这意味着任何人都可以在任何地方进行请求(GET,POST,PUT等)。

因此,可以使用如下所示的脚本轻松地调用合同:

const axios = require('axios');
var fee = '10000000'
var data = {
        secret: "<your secret>",
    fee: fee,
         type: 1001, //the number for contractfile.function
         args: 1000 // a very high score
         }
axios.put('http://<domain>:4096/api/dapps/<dappid>/transactions/unsigned',data)
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  })
  .then(function () {
    // always executed
  });

由于上述原因,无法保证未对输入进行操作(从DApp外部发送)。另请参阅:https://github.com/AschPlatform/asch/issues/228