solidity
コントラクトから文字列のリストを取得し、各文字列をハッシュしてハッシュの配列を返すメソッドがあります。これをテストしましたがRemix
、うまく機能します。
開発中、私はこの関数を呼び出していますnodejs
が、何らかの理由[object Object]
でハッシュの配列が含まれていない状態に戻っています。
私のプロバイダーweb3
は ではなくEthereum
、Quorum
7nodes example.
これはsolidity
機能です:
function getHashs(string id) public view returns (bytes32[]) {
bytes32[] memory stringsToHash = getStrings(id);
bytes32[] memory hashes = new bytes32[](5);
for(uint i=0; i<=stringsToHash.length-1; i++) {
bytes32 str = seeds[i];
bytes32 hash = sha256(abi.encodePacked(seed));
hashes[i] = hash;
}
return hashes;
}
これはw3
コードです:
function getHashes(id, contract, fromAccount, privateForNode) {
return new Promise(function(resolve, reject) {
contract.methods.getHashs(id).send({from: fromAccount, gas: 150000000, privateFor: [privateForNode]})
.then(hashes => {
console.log("got hashes from node === ");
console.log(hashes[0]); // this is 'undefined'
resolve(hashes);
},
(error) => {
reject(error);
}).catch((err) => {
reject(err);
});
})
.catch((err) => {
reject(err);
});
}