我正在尝试发送一个事务并让它在某个块上执行.根据JS API,这似乎是可能的:
https://github.com/ethereum/wiki/wiki/JavaScript-API#web3ethsendtransaction
参见参数#2,除非我误解了它.
但每次我尝试这样做时,它都会失败并显示"无效地址":
incrementer.increment.sendTransaction({from:eth.coinbase}, 28410, function(err, address) {
if (!err)
console.log("no err " + address);
else
console.log("err " + address);
});
Run Code Online (Sandbox Code Playgroud)
...而删除块参数28410 ...
incrementer.increment.sendTransaction({from:eth.coinbase}, function(err, address) {
if (!err)
console.log("no err " + address);
else
console.log("err " + address);
});
Run Code Online (Sandbox Code Playgroud)
......成功就好了.
有谁知道这是怎么回事?我正在努力做甚么可能吗?
我看到/听过开发人员谈论以太坊测试网,但我刚刚发布到公共区块链.什么是私人测试网,如何设置?
我在这里使用Poloniex C#API:Poloniex C#.
我已通过公钥/私钥组合连接到我的Poloniex帐户
private PoloniexClient client = new PoloniexClient(Properties.Resources.PublicKey, Properties.Resources.PrivateKey);
Run Code Online (Sandbox Code Playgroud)
我有一种获取交易信息的方法
public async void GetTrades(string curr1, string curr2)
{
CurrencyPair cp = new CurrencyPair(curr1, curr2);
var trades = await client.Markets.GetTradesAsync(cp);
foreach (var x in trades)
Console.WriteLine(x);
}
Run Code Online (Sandbox Code Playgroud)
它使用API的GetTradesAsync()方法,但我得到的输出是
Jojatekok.PoloniexAPI.MarketTools.Trade
Jojatekok.PoloniexAPI.MarketTools.Trade
Jojatekok.PoloniexAPI.MarketTools.Trade
...
这是我第一次使用Poloniex(以及任何与加密货币相关的东西),所以我不确定实际结果应该是什么样子,但我确信我确实应该得到更有意义的东西.我很感激任何帮助或建议.
我正在开始使用以太坊并构建一个 Dapp(顺便说一下,这到底是什么意思?)。在应用程序的基本安装(https://github.com/ethereum/wiki/wiki/Dapp-using-Meteor#connect-your-%C3%90app)时,我在尝试连接时收到此错误。
geth --rpc --rpccorsdomain "http://localhost:3000"
I0804 23:48:24.987448 ethdb/database.go:82] Alloted 128MB cache and 1024 file handles to /Users/( . )Y( . )/Library/Ethereum/chaindata
Fatal: Could not open database: resource temporarily unavailable
Run Code Online (Sandbox Code Playgroud)
我刚刚开始,我通过自制软件设置了以太坊并在 geth 上注册了一个帐户。不能从这里过去。
谢谢!
如何才能确定每个令牌的价格?
我试过了
contract OToken {
using SafeMath for uint256;
uint public _totalSupply = 0;
uint public constant _cap = 100000000;
string public constant symbol = "OXN";
string public constant name = "OToken";
uint public constant decimals = 18;
uint public oneTokenInWei = 183.602;
Run Code Online (Sandbox Code Playgroud)
如果我希望令牌价格为每个0.02美元,1个eth的交易价格为167美元,则1 wei = 183.602令牌
如果我想将每个令牌的价格更改为.03,我可以调用此函数
function setOneTokenInWei(uint w) onlyOwner {
oneTokenInWei = w;
changed(msg.sender);
}
Run Code Online (Sandbox Code Playgroud)
然后这个函数来创建令牌
function createTokens() payable{
require(
msg.value > 0
&& _totalSupply < _cap
&& CROWDSALE_PAUSED <1
);
uint multiplier = 10 ** decimals; …Run Code Online (Sandbox Code Playgroud) 我只是从坚固开始。我有一个这样的功能:
function get() constant returns (uint) {
return storedData;
}
Run Code Online (Sandbox Code Playgroud)
这里的constant关键字有什么用?我知道在这个键盘之后我们定义了返回类型但是为什么它前面需要常量?是否有替代方案,例如var?
我正在用松露创造我的第一个以太坊合约.我希望Web应用程序可以在没有MetaMask的情况下使用,所以我想知道运行我自己的私有节点并从这样的前端连接是否是个好主意:
this.web3 = new Web3(new Web3.providers.HttpProvider('http://my-public-ip:8545'));
Run Code Online (Sandbox Code Playgroud)
这种方法有安全隐患吗?
我正在为一些用例开发智能合约,目前我正在努力优化智能合约.我对Hitchiker指南中有趣的东西感到困惑.在第4节中,迭代合同代码
// returns true if proof is stored
// *read-only function*
function hasProof(bytes32 proof) constant returns (bool) {
for (uint256 i = 0; i < proofs.length; i++) {
if (proofs[i] == proof) {
return true;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
对于上面的代码,他表示"请注意,每次我们要检查文档是否经过公证时,我们都需要遍历所有现有的证据.这使得合同在每次检查时花费越来越多的气体,因为添加了更多文档. "
毫无疑问,实现它的正确方法是使用映射而不是数组结构.这一点让我感到困惑.它是只读函数,它不是影响区块链的事务.当我观察我的netstats时,调用此函数时它不显示任何事务(实际上,这是我在调用此函数之前所期望的).
我不认为他误解了这个机制,有人可以清楚我对这个评论的看法吗?
我遇到了与此问题完全相同的问题https://ethereum.stackexchange.com/questions/7707/is-it-possible-to-preload-contracts-in-the-genesis-block?rq=1
Agian,是否可以通过分配alloc - > code字段来预定义合约,
但是,似乎无论我调用的合约中的哪个方法,无论此方法的逻辑和内容如何,它总是返回合同本身的字节码.
这可能是我部署合同的原因:
当我调用test()时,获取:
当我调用test2()时,获取:
当我调用test3(1)时,获取false,这不是1 == 1.
我已经浏览了相关的主题,发现了这个,https://ethereum.stackexchange.com/questions/30366/how-does-the-genesis-json-file-define-the-initial-state-of-the -blockchain
看起来存储设置是必要的但我完全不知道我应该写什么键/值.
那我怎么处理这个案子呢?
web3.eth.getAccounts()对我不起作用.下面的代码显示执行时的"错误"(被拒绝).我使用的是web3 1.0.0 beta-46.我正在学习Stephen Grider的教程视频并使用beta-26,是版本相关的问题还是我做错了什么?
const assert = require('assert');
const ganache = require('ganache-cli');
const Web3 = require('web3');
const web3 = new Web3(ganache.provider());
web3.eth.getAccounts()
.then(fetchedAccounts => {
console.log(fetchedAccounts);
},() => {
console.log("error");
});
Run Code Online (Sandbox Code Playgroud)