首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法连接到testrpc

无法连接到testrpc
EN

Ethereum用户
提问于 2017-08-29 10:09:05
回答 1查看 578关注 0票数 0

我在虚拟机(Ubuntu16.04)上运行了一个testrpc,当我使用松露控制台与它交互时,它正常工作。

我唯一的目标是调用一个智能合同,它只需将乙醚从一个帐户发送到另一个帐户。这是一份明智的合同:

代码语言:javascript
复制
pragma solidity ^0.4.4;

contract Transfer {
    address owner;

    function Transfer () {
        owner = msg.sender;
    }

    function sendEther (address dst) payable {
        if(msg.value<=0) revert();
        dst.transfer(msg.value);
    }
}

我正在尝试使用javascript从web访问函数sendEther。当我在本地访问我的测试网时,一切正常,但现在我无法连接到它。

脚本通过浏览器化进行转换,然后作为一个简单的脚本标记包含在htm文件中。

剧本是这样的:

代码语言:javascript
复制
var Web3 = require('web3');
let web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));

function getParameterByName(name, url) {
    /* irrelevant code here */
}

try
{
    // I have to define "source" this way because web3.eth.accounts[0] is undefined, most likely because there's no connection :(
    var source = "0x8691202f56859bd5362f1033fa64e71cb4eae579"; 
    var abi = [{"constant":false,"inputs":[{"name":"dst","type":"address"}],"name":"sendEther","outputs":[],"payable":true,"type":"function"},{"inputs":[],"payable":false,"type":"constructor"}];
    var contract_addr = getParameterByName("contract");
    var amount = getParameterByName("amount");
    var destination = getParameterByName("destination");
    var contract = new web3.eth.Contract(abi, contract_addr, {from: source, to: destination, value: parseInt(amount)});
    var hash = contract.methods.sendEther(destinatario);


    document.write("<br/> Source: ");
    document.write(source);
    document.write("<br/> Destination: ");
    document.write(destination);
    document.write("<br/><br/><b>ABI:</b> ");
    document.write(JSON.stringify(abi));
    document.write("<br/><br/><b>Contract:</b> ");
    document.write(JSON.stringify(contract));
    document.write("<br/><br/><b>Contract address:</b> ");
    document.write(contract_addr);
    document.write("<br/><br/><b>Amount (weis):</b> ");
    document.write(amount);
    document.write("<br/><br/><b>Transaction hash:</b> ");
    document.write(JSON.stringify(hash));
    document.write("<br/><br/><b>Transaction details:</b> ");
    document.write(JSON.stringify(web3.eth.getTransaction(hash)));
} catch (e) {
    document.write("<br/></br><b>Error: ");
    document.write(e.message);
    document.write("</b>");
}

这是我得到的输出:

代码语言:javascript
复制
Source: 0x8691202f56859bd5362f1033fa64e71cb4eae579

Destination: 0x09b74dc58118140deec480d562651e42ae3b21ad

ABI: [{"constant":false,"inputs":[{"name":"dst","type":"address"}],"name":"sendEther","outputs":[],"payable":true,"type":"function","signature":"0x48c981e2"},{"inputs":[],"payable":false,"type":"constructor"}]

Contract: {"currentProvider":{"host":"http://localhost:8545","timeout":0,"connected":false},"_requestManager":{"provider":{"host":"http://localhost:8545","timeout":0,"connected":false},"providers":{},"subscriptions":{}},"givenProvider":null,"providers":{},"_provider":{"host":"http://localhost:8545","timeout":0,"connected":false},"_ethereumCall":{},"options":{"from":"0x8691202F56859BD5362f1033FA64E71cb4EaE579","to":"0x09b74dc58118140deec480d562651e42ae3b21ad","value":1000000000000,"address":"0x377D5848c8A7B68D20CcE114f23AD959a62CC9f7","jsonInterface":[{"constant":false,"inputs":[{"name":"dst","type":"address"}],"name":"sendEther","outputs":[],"payable":true,"type":"function","signature":"0x48c981e2"},{"inputs":[],"payable":false,"type":"constructor"}]},"defaultAccount":null,"defaultBlock":"latest","methods":{},"events":{},"_address":"0x377D5848c8A7B68D20CcE114f23AD959a62CC9f7","_jsonInterface":[{"constant":false,"inputs":[{"name":"dst","type":"address"}],"name":"sendEther","outputs":[],"payable":true,"type":"function","signature":"0x48c981e2"},{"inputs":[],"payable":false,"type":"constructor"}]}

Contract address: 0x377d5848c8a7b68d20cce114f23ad959a62cc9f7

Amount (weis): 1000000000000

Transaction hash: {"arguments":["0x09b74dc58118140deec480d562651e42ae3b21ad"],"_method":{"constant":false,"inputs":[{"name":"dst","type":"address"}],"name":"sendEther","outputs":[],"payable":true,"type":"function","signature":"0x48c981e2"},"_parent":{"currentProvider":{"host":"http://localhost:8545","timeout":0,"connected":false},"_requestManager":{"provider":{"host":"http://localhost:8545","timeout":0,"connected":false},"providers":{},"subscriptions":{}},"givenProvider":null,"providers":{},"_provider":{"host":"http://localhost:8545","timeout":0,"connected":false},"_ethereumCall":{},"options":{"from":"0x8691202F56859BD5362f1033FA64E71cb4EaE579","to":"0x09b74dc58118140deec480d562651e42ae3b21ad","value":1000000000000,"address":"0x377D5848c8A7B68D20CcE114f23AD959a62CC9f7","jsonInterface":[{"constant":false,"inputs":[{"name":"dst","type":"address"}],"name":"sendEther","outputs":[],"payable":true,"type":"function","signature":"0x48c981e2"},{"inputs":[],"payable":false,"type":"constructor"}]},"defaultAccount":null,"defaultBlock":"latest","methods":{},"events":{},"_address":"0x377D5848c8A7B68D20CcE114f23AD959a62CC9f7","_jsonInterface":[{"constant":false,"inputs":[{"name":"dst","type":"address"}],"name":"sendEther","outputs":[],"payable":true,"type":"function","signature":"0x48c981e2"},{"inputs":[],"payable":false,"type":"constructor"}]}}

Transaction details: {"isFulfilled":false,"isRejected":false} 

这就是问题所在..。当我与松露控制台交互时,一切都很好。当我尝试通过网络做同样的事情时,它不会连接。

对这里发生了什么有什么想法吗?

先谢谢你!)

EN

回答 1

Ethereum用户

回答已采纳

发布于 2017-08-30 11:10:39

好吧,我找到答案了。我会把它留在这里给任何发现有用的人..。

我没有意识到truffle serve,当我尝试使用它时,它引发了一个错误。

该错误可以通过以下指示来解决:https://github.com/trufflesuite/truffle/issues/448

我终于可以从浏览器中看到我的testrpc!:)

票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/25399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档