从外部调用以太坊智能合约功能的最常见方式?

Most common way to call the functions of an Ethereum smart contract externally?

我正在使用以 Solidity 编写的以太坊智能合约创建 DApp。

我想与合约进行交互,并向 P2P 游戏的获胜者支付代币。为了简单起见,游戏可以是剪刀石头布。见证人将主持比赛,并向合同发送电话以支付给获胜者。

假设我们有两个玩家:player 1 有一个带有 public 密钥的以太坊钱包 a1b2c3d4e5(本轮获胜者)

player 2 有一个 public 键 f6g7h8i9j0 (本轮的失败者)

见证人如何从游戏端访问我的 Solidity 智能合约中支付 player 1 的功能?

您可以使用 embark framework 构建去中心化 HTML5 与以太坊区块链交互的应用程序。

Embark 包含一个测试库,可以快速 运行 并在 EVM(以太坊虚拟机)中测试您的合约。

Embark 支持 IPFS。

您可以创建智能合约,例如:

pragma solidity ^0.4.7;
contract SimpleStorage {
  uint public storedData;

  function SimpleStorage(uint initialValue) {
    storedData = initialValue;
  }

  function set(uint x) {
    storedData = x;
  }
  function get() constant returns (uint retVal) {
    return storedData;
  }
}

事件可能会像这样从 JS 框架中触发

myContract.eventName({from: web3.eth.accounts}, 'latest')
    .then(function(event) { console.log(event) });

通过IPFS连接的通信是这样的

//set yourself as the ipfs provider

EmbarkJS.Messages.setProvider('orbit', {server: 'localhost', port: 5001})

EmbarkJS.Messages.sendMessage({topic: "sometopic", data: 'hello world'})