Javascript 发送多个事务,但其中一个事务始终会失败

Javascript 发送多个事务,但其中一个事务始终会失败,javascript,blockchain,solidity,smartcontracts,Javascript,Blockchain,Solidity,Smartcontracts,我已经创建了我的JS和智能合约,它们都很好用 但我把它们写在了一起。其中两项职能来自不同的合同 每当我按下按钮激活功能时,就会出现3笔交易(合同A的2笔交易和合同B的1笔交易)。我附上了一封信 如果我按“全部确认”,调用的第一个合同将有一个成功的交易,但第二个合同不会 if (typeof(web3) === "undefined") { error("Unable to find web3. " + "Please run MetaMask (or something else that

我已经创建了我的JS和智能合约,它们都很好用

但我把它们写在了一起。其中两项职能来自不同的合同

每当我按下按钮激活功能时,就会出现3笔交易(合同A的2笔交易和合同B的1笔交易)。我附上了一封信

如果我按“全部确认”,调用的第一个合同将有一个成功的交易,但第二个合同不会

if (typeof(web3) === "undefined") {
   error("Unable to find web3. " + "Please run MetaMask (or something else that injects web3).");
} 
else {
   console.log("Found injected web3.");
   web3 = new Web3(web3.currentProvider);

   console.log("Connected to the Ropsten test network.");
   counterDB = web3.eth.contract(abiDB).at(addressDB);
   counterWallet = web3.eth.contract(abiWallet).at(addressWallet);                       
}
有没有一种方法可以让我在一次交易中完成所有事情?我写的
web3
行是否正确


是我的全部源代码

你发布的不是重要的代码行。您必须发布
sendTransaction
调用。但是,如果您想要合并事务,则必须在合同端进行合并(即使用代理合同)。如果需要,可以将事务分开。不过,汽油的价格要高一点。至于第二个失败的原因,我在这里做一个完整的猜测,但我首先要看的是第二个事务中使用的nonce,并确保它是递增的。如果你给出完整的源代码,我可以提供帮助。正如@AdamKipnis所说,你写的不是重要的部分。你可以在这里查看我的代码。我设法解决了这个问题。但是现在又出现了另一个问题。。当我调用两个函数时,它显然会调用这两个函数,但最后一个函数会被再次调用。这意味着调用了2个函数,但由于对最后一个函数的重复调用,我正在为3个合同进行事务处理。问题在第158到203行