Browse Source

fix bug why deploying to network

cl-refactor
yann300 10 years ago
parent
commit
4bc11ad6cb
  1. 10
      alethzero/DappLoader.cpp
  2. 4
      mix/ClientModel.cpp
  3. 2
      mix/ClientModel.h
  4. 4
      mix/ContractCallDataEncoder.cpp
  5. 2
      mix/ContractCallDataEncoder.h
  6. 6
      mix/qml/DeploymentDialog.qml
  7. 21
      mix/qml/js/NetworkDeployment.js

10
alethzero/DappLoader.cpp

@ -39,8 +39,8 @@ using namespace dev;
using namespace dev::eth;
using namespace dev::crypto;
Address c_registrar = Address("0000000000000000000000000000000000000a28");
Address c_urlHint = Address("0000000000000000000000000000000000000a29");
Address c_registrar = Address("6a16d3a392de03c67c1880acca6a9d650015c8ae");
Address c_urlHint = Address("43c6d48ef55d10a786eb3e244824c820d5359b43");
QString contentsOfQResource(std::string const& res);
@ -73,19 +73,19 @@ DappLocation DappLoader::resolveAppUri(QString const& _uri)
string32 name = ZeroString32;
QByteArray utf8 = parts[partIndex].toUtf8();
std::copy(utf8.data(), utf8.data() + utf8.size(), name.data());
address = abiOut<Address>(web3()->ethereum()->call(address, abiIn("addr(string32)", name)).output);
address = abiOut<Address>(web3()->ethereum()->call(address, abiIn("subRegistrar(bytes32)", name)).output);
domainParts.append(parts[partIndex]);
if (!address)
{
//we have the address of the last part, try to get content hash
contentHash = abiOut<h256>(web3()->ethereum()->call(lastAddress, abiIn("content(string32)", name)).output);
contentHash = abiOut<h256>(web3()->ethereum()->call(lastAddress, abiIn("content(bytes32)", name)).output);
if (!contentHash)
throw dev::Exception() << errinfo_comment("Can't resolve address");
}
++partIndex;
}
string32 contentUrl = abiOut<string32>(web3()->ethereum()->call(c_urlHint, abiIn("url(hash256)", contentHash)).output);
string32 contentUrl = abiOut<string32>(web3()->ethereum()->call(c_urlHint, abiIn("url(bytes32)", contentHash)).output);
QString domain = domainParts.join('/');
parts.erase(parts.begin(), parts.begin() + partIndex);
QString path = parts.join('/');

4
mix/ClientModel.cpp

@ -151,10 +151,10 @@ QString ClientModel::encodeAbiString(QString _string)
return QString::fromStdString(toHex(encoder.encodeBytes(_string)));
}
QString ClientModel::encodeString(QString const& _param)
QString ClientModel::encodeStringParam(QString const& _param)
{
ContractCallDataEncoder encoder;
return QString::fromStdString(toHex(encoder.encodeBytesParam(_param, 32)));
return QString::fromStdString(toHex(encoder.encodeStringParam(_param, 32)));
}
QStringList ClientModel::encodeParams(QVariant const& _param, QString const& _contract, QString const& _function)

2
mix/ClientModel.h

@ -158,7 +158,7 @@ public:
/// Encode parameters
Q_INVOKABLE QStringList encodeParams(QVariant const& _param, QString const& _contract, QString const& _function);
/// Encode parameter
Q_INVOKABLE QString encodeString(QString const& _param);
Q_INVOKABLE QString encodeStringParam(QString const& _param);
public slots:
/// Setup state, run transaction sequence, show debugger for the last transaction

4
mix/ContractCallDataEncoder.cpp

@ -121,7 +121,7 @@ unsigned ContractCallDataEncoder::encodeSingleItem(QString const& _data, Solidit
catch (std::exception const&)
{
// manage input as a string.
result = encodeBytesParam(src, alignSize);
result = encodeStringParam(src, alignSize);
}
}
@ -165,7 +165,7 @@ QString ContractCallDataEncoder::toString(bool _b)
return _b ? "true" : "false";
}
dev::bytes ContractCallDataEncoder::encodeBytesParam(QString const& _str, unsigned alignSize)
dev::bytes ContractCallDataEncoder::encodeStringParam(QString const& _str, unsigned alignSize)
{
bytes result;
QByteArray bytesAr = _str.toLocal8Bit();

2
mix/ContractCallDataEncoder.h

@ -53,7 +53,7 @@ public:
/// Get all encoded data encoded by encode function.
bytes encodedData();
/// Encode a string to bytes (in order to be used as funtion param)
dev::bytes encodeBytesParam(QString const& _str, unsigned _alignSize);
dev::bytes encodeStringParam(QString const& _str, unsigned _alignSize);
/// Encode a string to ABI bytes
dev::bytes encodeBytes(QString const& _str);
/// Decode bytes from ABI

6
mix/qml/DeploymentDialog.qml

@ -25,7 +25,7 @@ Dialog {
property string packageBase64
property string eth: registrarAddr.text
property string currentAccount
property alias gasToUse: gasToUseInput.text
property string gasToUse: "0x188132" //gasToUseInput.text
property variant paramsModel: []
function close()
@ -341,7 +341,7 @@ Dialog {
width: 200
id: applicationUrlEth
onTextChanged: {
appUrlFormatted.text = ProjectModelCode.formatAppUrl(text).join('/');
appUrlFormatted.text = NetworkDeploymentCode.formatAppUrl(text).join('/');
}
}
@ -516,7 +516,7 @@ Dialog {
if (applicationUrlHttp.text.length > 32)
inError.push(qsTr(applicationUrlHttp.text));
if (!stopForInputError(inError))
ProjectModelCode.registerToUrlHint();
NetworkDeploymentCode.registerToUrlHint();
}
}
}

21
mix/qml/js/NetworkDeployment.js

@ -223,7 +223,7 @@ function checkEthPath(dappUrl, callBack)
else
{
// the first owned registrar must have been created to follow the path.
var str = clientModel.encodeString(dappUrl[0]);
var str = clientModel.encodeStringParam(dappUrl[0]);
console.log("prarma = " + str + " " + deploymentDialog.eth);
console.log("0x5a3a05bd" + str);
@ -234,7 +234,7 @@ function checkEthPath(dappUrl, callBack)
//subRegistrar()
jsonrpc: "2.0",
method: "eth_call",
params: [ { "gas": 150000, "from": deploymentDialog.currentAccount, "to": '0x' + deploymentDialog.eth, "data": "0x5a3a05bd" + str } ],
params: [ { "gas": "0xffff", "from": deploymentDialog.currentAccount, "to": '0x' + deploymentDialog.eth, "data": "0x5a3a05bd" + str }, "pending" ],
id: jsonRpcRequestId++
});
rpcCall(requests, function (httpRequest, response) {
@ -266,7 +266,7 @@ function checkRegistration(dappUrl, addr, callBack)
console.log(txt);
var requests = [];
var registrar = {}
var str = clientModel.encodeString(dappUrl[0]);
var str = clientModel.encodeStringParam(dappUrl[0]);
requests.push({
//getOwner()
jsonrpc: "2.0",
@ -331,7 +331,7 @@ function checkRegistration(dappUrl, addr, callBack)
trCountIncrementTimeOut();
return;
}
var crLevel = clientModel.encodeString(dappUrl[0]);
var crLevel = clientModel.encodeStringParam(dappUrl[0]);
requests.push({
//setRegister()
jsonrpc: "2.0",
@ -363,13 +363,17 @@ function registerContentHash(registrar, callBack)
var txt = qsTr("Finalizing Dapp registration ...");
deploymentStepChanged(txt);
console.log(txt);
console.log(" 45 64 564 0 " + deploymentDialog.packageHash);
var requests = [];
var paramTitle = clientModel.encodeAbiString(projectModel.projectTitle);
var paramTitle = clientModel.encodeStringParam(projectModel.projectTitle);
console.log("ggg " + paramTitle);
console.log('registrar ' + registrar);
requests.push({
//setContent()
jsonrpc: "2.0",
method: "eth_sendTransaction",
params: [ { "from": deploymentDialog.currentAccount, "gas": 30000, "gasPrice": "10", "to": '0x' + registrar, "data": "0xc3d014d6" + paramTitle + deploymentDialog.packageHash } ],
params: [ { "from": deploymentDialog.currentAccount, "gas": "0xfffff", "to": '0x' + registrar, "data": "0xc3d014d6" + paramTitle + deploymentDialog.packageHash } ],
id: jsonRpcRequestId++
});
rpcCall(requests, function (httpRequest, response) {
@ -381,12 +385,13 @@ function registerToUrlHint()
{
deploymentStepChanged(qsTr("Registering application Resources (" + deploymentDialog.applicationUrlHttp) + ") ...");
var requests = [];
var paramUrlHttp = clientModel.encodeString(deploymentDialog.applicationUrlHttp);
var paramUrlHttp = clientModel.encodeStringParam(deploymentDialog.applicationUrlHttp);
console.log("package hash " + deploymentDialog.packageHash);
requests.push({
//urlHint => suggestUrl
jsonrpc: "2.0",
method: "eth_sendTransaction",
params: [ { "to": '0x' + deploymentDialog.urlHintContract, "gas": 30000, "data": "0x584e86ad" + deploymentDialog.packageHash + paramUrlHttp } ],
params: [ { "to": '0x' + deploymentDialog.urlHintContract, "from": deploymentDialog.currentAccount, "gas": "0xfffff", "data": "0x584e86ad" + deploymentDialog.packageHash + paramUrlHttp } ],
id: jsonRpcRequestId++
});

Loading…
Cancel
Save