Прочитав документацию здесь и здесь, я попробовал запустить скрипт проверки баланса отсюда . Я изменил путь к исходным файлам, и мой код выглядит так (я скачал все зависимости javascript в текущем рабочем каталоге):
<!doctype>
<html>
<head>
<script type="text/javascript" src="./bignumber.js/bignumber.min.js"></script>
<script type="text/javascript" src="./web3.js/dist/web3.js"></script>
<script type="text/javascript">
var Web3 = require('web3');
var web3 = new Web3();
web3.setProvider(new web3.providers.HttpProvider("http://127.0.0.1:8000"));
function watchBalance() {
var coinbase = web3.eth.coinbase;
var originalBalance = web3.eth.getBalance(coinbase).toNumber();
document.getElementById('coinbase').innerText = 'coinbase: ' + coinbase;
document.getElementById('original').innerText = ' original balance: ' + originalBalance + ' watching...';
web3.eth.filter('latest').watch(function() {
var currentBalance = web3.eth.getBalance(coinbase).toNumber();
document.getElementById("current").innerText = 'current: ' + currentBalance;
document.getElementById("diff").innerText = 'diff: ' + (currentBalance - originalBalance);
});
}
</script>
</head>
<body>
<h1>coinbase balance</h1>
<button type="button" onClick="watchBalance();">watch balance</button>
<div></div>
<div id="coinbase"></div>
<div id="original"></div>
<div id="current"></div>
<div id="diff"></div>
</body>
</html>
Я запускаю экземпляр http-сервера, используя SimpleHTTPServer Python:
python -m SimpleHTTPServer
Узел, к которому я подключаюсь, работает как узел начальной загрузки:
pyethapp -c eth.network_id=1337 -c jsonrpc.corsdomain='http://localhost:8000' --data-dir BootstrapDir -c node.privkey_hex=091bd6067cb4612df85d9c1ff85cc47f259ced4d4cd99816b14f35650f59c322 -b 'enode://288b97262895b1c7ec61cf314c2e2004407d0a5dc77566877aad1f2a36659c8b698f4b56fd06c4a0c0bf007b4cfb3e7122d907da3b005fa90e724441902eb19e@127.0.0.1:29873' -c eth.genesis=CustomGenesis.json -m 100 run
Когда я отлаживаю скрипт в Chrome, я получаю следующие ошибки:
httpprovider.js:77 POST http://127.0.0.1:8000/ 501
(Unsupported method ('POST'))
HttpProvider.send @
httpprovider.js:77RequestManager.send @
requestmanager.js:58get @
property.js:107watchBalance @
balance.html:14onclick @
balance.html:28
errors.js:35 Uncaught Error: Invalid JSON RPC response: "
<head>\n<title>Error response</title>\n</head>\n<body>\n<h1>Error response</h1>\n<p>Error code 501.\n<p>Message: Unsupported method ('POST').\n<p>Error code explanation: 501 = Server does not support this operation.\n</body>\n"
InvalidResponse @
errors.js:35HttpProvider.send @
httpprovider.js:87RequestManager.send @
requestmanager.js:58get @
property.js:107watchBalance @
balance.html:14onclick @
balance.html:28
Есть ли решение этой проблемы?
Я нашел проблему; это было связано с SimpleHTTPServer . Я сейчас использую апач. Я настроил apache для прослушивания порта, отличного от порта по умолчанию, отредактировав port.conf :
# find / -name *conf | grep apache
/etc/apache2/mods-available/dnssd.conf
/etc/apache2/mods-available/dir.conf
/etc/apache2/mods-available/autoindex.conf
/etc/apache2/mods-available/mpm_worker.conf
/etc/apache2/mods-available/cgid.conf
/etc/apache2/mods-available/mime_magic.conf
/etc/apache2/mods-available/ssl.conf
/etc/apache2/mods-available/fcgid.conf
/etc/apache2/mods-available/alias.conf
/etc/apache2/mods-available/mime.conf
/etc/apache2/mods-available/php5.conf
/etc/apache2/mods-available/dav_fs.conf
/etc/apache2/mods-available/status.conf
/etc/apache2/mods-available/proxy_ftp.conf
/etc/apache2/mods-available/actions.conf
/etc/apache2/mods-available/proxy_balancer.conf
/etc/apache2/mods-available/userdir.conf
/etc/apache2/mods-available/cache_disk.conf
/etc/apache2/mods-available/info.conf
/etc/apache2/mods-available/deflate.conf
/etc/apache2/mods-available/setenvif.conf
/etc/apache2/mods-available/ldap.conf
/etc/apache2/mods-available/mpm_event.conf
/etc/apache2/mods-available/mpm_prefork.conf
/etc/apache2/mods-available/proxy.conf
/etc/apache2/mods-available/negotiation.conf
/etc/apache2/mods-available/reqtimeout.conf
/etc/apache2/conf-enabled/other-vhosts-access-log.conf
/etc/apache2/conf-enabled/serve-cgi-bin.conf
/etc/apache2/conf-enabled/security.conf
/etc/apache2/conf-enabled/charset.conf
/etc/apache2/conf-enabled/localized-error-pages.conf
/etc/apache2/conf-enabled/apache2-doc.conf
/etc/apache2/mods-enabled/dir.conf
/etc/apache2/mods-enabled/autoindex.conf
/etc/apache2/mods-enabled/fcgid.conf
/etc/apache2/mods-enabled/alias.conf
/etc/apache2/mods-enabled/mime.conf
/etc/apache2/mods-enabled/php5.conf
/etc/apache2/mods-enabled/status.conf
/etc/apache2/mods-enabled/deflate.conf
/etc/apache2/mods-enabled/setenvif.conf
/etc/apache2/mods-enabled/mpm_prefork.conf
/etc/apache2/mods-enabled/negotiation.conf
/etc/apache2/conf-available/other-vhosts-access-log.conf
/etc/apache2/conf-available/php5-cgi.conf
/etc/apache2/conf-available/serve-cgi-bin.conf
/etc/apache2/conf-available/security.conf
/etc/apache2/conf-available/javascript-common.conf
/etc/apache2/conf-available/charset.conf
/etc/apache2/conf-available/localized-error-pages.conf
/etc/apache2/conf-available/apache2-doc.conf
/etc/apache2/sites-available/default-ssl.conf
/etc/apache2/sites-available/000-default.conf
/etc/apache2/ports.conf
/etc/apache2/apache2.conf
/etc/apache2/sites-enabled/000-default.conf
Установите нестандартный порт для apache:
vim /etc/apache2/ports.conf
Listen 8000
Перезапустите апач (в дебиане):
sudo service apache2 restart
И скопируйте html-файл вместе с зависимостями javascript в корень веб-сайта:
sudo cp -r ethreum_js/ /var/www/html
Вы также можете создать виртуальный хост для тестирования функциональности web3.js.