read registry_address from given block (#7866)

This commit is contained in:
Svyatoslav Nikolsky
2018-02-12 20:02:48 +03:00
committed by Afri Schoedon
parent a30de1b8d8
commit 1ca1fba8cf
8 changed files with 10 additions and 10 deletions

View File

@@ -1827,7 +1827,7 @@ impl BlockChainClient for Client {
self.registrar_address.clone()
}
fn registry_address(&self, name: String) -> Option<Address> {
fn registry_address(&self, name: String, block: BlockId) -> Option<Address> {
let address = match self.registrar_address {
Some(address) => address,
None => return None,
@@ -1835,7 +1835,7 @@ impl BlockChainClient for Client {
self.registrar.functions()
.get_address()
.call(keccak(name.as_bytes()), "A", &|data| self.call_contract(BlockId::Latest, address, data))
.call(keccak(name.as_bytes()), "A", &|data| self.call_contract(block, address, data))
.ok()
.and_then(|a| if a.is_zero() {
None

View File

@@ -785,7 +785,7 @@ impl BlockChainClient for TestBlockChainClient {
fn registrar_address(&self) -> Option<Address> { None }
fn registry_address(&self, _name: String) -> Option<Address> { None }
fn registry_address(&self, _name: String, _block: BlockId) -> Option<Address> { None }
fn eip86_transition(&self) -> u64 { u64::max_value() }
}

View File

@@ -279,7 +279,7 @@ pub trait BlockChainClient : Sync + Send {
fn registrar_address(&self) -> Option<Address>;
/// Get the address of a particular blockchain service, if available.
fn registry_address(&self, name: String) -> Option<Address>;
fn registry_address(&self, name: String, block: BlockId) -> Option<Address>;
/// Get the EIP-86 transition block number.
fn eip86_transition(&self) -> u64;

View File

@@ -1238,7 +1238,7 @@ impl ServiceTransactionAction {
impl<'a> ::ethcore_miner::service_transaction_checker::ContractCaller for &'a MiningBlockChainClient {
fn registry_address(&self, name: &str) -> Option<Address> {
MiningBlockChainClient::registry_address(*self, name.into())
MiningBlockChainClient::registry_address(*self, name.into(), BlockId::Latest)
}
fn call_contract(&self, block: BlockId, address: Address, data: Vec<u8>) -> Result<Vec<u8>, String> {