Ich versuche, mit web3js auf meinen Vertrag zuzugreifen, und habe hier meine HTML-Datei (mit Vertragsdetails) angegeben. Ich erhalte 2 Fehler und versuchte Methoden wie Konto entsperren, Standardkonto festlegen usw., und nichts scheint zu funktionieren. Die CURL-Operation gibt den Fehler 405 zurück. Irgendwelche Vorschläge bitte.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>HC</title>
<link rel="stylesheet" type="text/css" href="./js/main.css">
<script src="./js/web3.min.js"></script>
</head>
<body>
<div class="container">
<h1>HC Demo</h1>
<h2 id="instructor"></h2>
<label for="name" class="col-lg-2 control-label">Provider Name</label>
<input id="name" type="text">
<label for="name" class="col-lg-2 control-label">Account Type</label>
<input id="type" type="text">
<button id="button">Add provider</button>
</div>
<script src="./js/jquery-3.2.1.slim.min.js"></script>
<script>
if (typeof web3 !== 'undefined') {
web3 = new Web3(web3.currentProvider);
} else {
// set the provider you want from Web3.providers
web3 = new Web3(new Web3.providers.HttpProvider("https://ropsten.infura.io/"));
}
web3.eth.defaultAccount = "0x44261BBDAB466E1950Ef173b595322B49F4DA5C5";
console.log("Default account = " + web3.eth.defaultAccount );
//web3.eth.defaultAccount = "0x44261BBDAB466E1950Ef173b595322B49F4DA5C5";
//personal.unlockAccount(web3.eth.defaultAccount);
var hcContract = web3.eth.contract([{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"subscribers","outputs":[{"name":"id","type":"uint256"},{"name":"name","type":"string"},{"name":"accountType","type":"string"},{"name":"accBalance","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"accountType","type":"string"}],"name":"addProvider","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"id","type":"uint256"},{"indexed":false,"name":"name","type":"string"},{"indexed":false,"name":"accountType","type":"string"},{"indexed":false,"name":"accBalance","type":"uint16"}],"name":"eveSubscriber","type":"event"},{"constant":false,"inputs":[{"name":"id","type":"uint256"}],"name":"getAccountBalance","outputs":[{"name":"_accBal","type":"uint16"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"id","type":"uint256"}],"name":"getProviderName","outputs":[{"name":"_name","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"},{"name":"_claimAmount","type":"uint16"}],"name":"submitClaim","outputs":[{"name":"status","type":"bool"},{"name":"_remainingBalance","type":"uint16"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]);
//hcContract.web3.eth.defaultAccount="0x44261BBDAB466E1950Ef173b595322B49F4DA5C5";
var Contract = hcContract.at('0x221e64f96560f97d8a06510da8a020484d5669eb');
//hcContract.web3.eth.defaultAccount = "0x44261BBDAB466E1950Ef173b595322B49F4DA5C5";
console.log(Contract);
var event = Contract.eveSubscriber({},'latest');
$("#button").click(function() {
console.log($("#name").val(), $("#type").val());
Contract.addProvider($("#name").val(), $("#type").val());
});
</script>
</body>
</html>
<!--
https://ropsten.etherscan.io/tx/0x5d16f717691d796a1ec901014981e2594ec8356a06cce25dca061abe65ae432a
pragma experimental ABIEncoderV2;
contract HealthCareDemo {
//ERC20 standard
string public constant name = "HealthCare_v0.1";
string public constant symbol = "HC";
uint8 public constant decimals = 18; // 18 is the most common number of decimal places
address owner;
function kill() { // returns (bool){
// if (msg.sender == owner)
selfdestruct(owner);
}
struct SubscriberStruct {
uint id;
string name;
string accountType;
uint16 accBalance;
}
SubscriberStruct[] public subscribers;
// mapping (address => SubscriberStruct[]) public subscribers;
event eveSubscriber (
uint id,
string name,
string accountType,
uint16 accBalance
);
//Provider gets added and based on account type, balance is set
function addProvider(string name, string accountType) returns (bool) {
uint16 _accBal = 0;
if(compareStrings(accountType,"HRA")) {
_accBal = 500;
}
else if (compareStrings(accountType,"FSA")) {
_accBal = 1000;
}
else {
_accBal = 100;
}
SubscriberStruct memory s;
s.name = name;
s.accountType = accountType;
s.id = subscribers.length;
s.accBalance = _accBal;
subscribers.push(s);
//eveSubscriber(subscribers[id].id,subscribers[id].name,subscribers[id].accountType,subscribers[id].accBalance);
eveSubscriber(s.id,s.name,s.accountType,s.accBalance);
return true;
}
//https://github.com/ethereum/solidity/issues/2948 -- returning struct has issue
function getProviderName(uint id) public returns (string _name) {
return subscribers[id].name;
}
function getAccountBalance(uint id) public returns (uint16 _accBal) {
return subscribers[id].accBalance;
}
function submitClaim(uint _id, uint16 _claimAmount) public returns (bool status, uint16 _remainingBalance) {
if(subscribers[_id].accBalance >= _claimAmount) {
subscribers[_id].accBalance -= _claimAmount;
return (true, subscribers[_id].accBalance);
}
else {
return (false, subscribers[_id].accBalance);
}
}
function compareStrings (string a, string b) view private returns (bool){
return keccak256(a) == keccak256(b);
}
}
-->
Fehler im Brave-Browser -
Fehler Nr. 1: beim Laden der Seite
Statuscode:405 Methode nicht erlaubt
Request Payload: {"jsonrpc":"2.0","id":1,"method":"eth_newFilter","params":[{"topics":["0x6988b3af4053aeb8a7e14aad74b7539182c310204e73eabe35b5aa92938f6db5"],"address":"0x221e64f96560f97d8a06510da8a020484d5669eb"} ]}
Fehler Nr. 2: beim Klicken auf „Anbieter hinzufügen“
Statuscode:405 Methode nicht erlaubt
Request Payload: {"jsonrpc":"2.0","id":2,"method":"eth_sendTransaction","params":[{"to":"0x221e64f96560f97d8a06510da8a020484d5669eb","data":"0x705258340000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000024d4b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034653410000000000000000000000000000000000000000000000000000000000","from ":"0x44261BBDAB466E1950Ef173b595322B49F4DA5C5"}]}
Ich gehe davon aus, dass die Branche, die verfolgt wird, diejenige ist, die Infura als Anbieter verwendet.
Infura kann keine Konten entsperren oder Transaktionen signieren, da es Ihre privaten Schlüssel nicht kennt. Die Fehlermeldung soll darauf hinweisen, dass die von Ihnen aufgerufenen Methoden nicht unterstützt werden.
Danke an @smarx - jetzt verstehe ich es.
Also, die Antwort auf das, was ich tun wollte, ist:
Jetzt kann ich auf meinen Vertrag zugreifen, der in Infura bereitgestellt wird.
Matheswaran Kanagarajan
Benutzer19510
if
Anweisung versucht, einen eingefügten web3-Anbieter zu verwenden. MetaMask ist der am häufigsten verwendete Web3-Anbieter und ermöglicht es dem Benutzer Ihrer App, jedes Konto zu verwenden, das er mit MetaMask eingerichtet hat.Matheswaran Kanagarajan
Benutzer19510
Matheswaran Kanagarajan
Benutzer19510
Matheswaran Kanagarajan