mirror of https://github.com/hyperledger/besu
Fix GraphQL IBFT Coinbase Query (#1282)
When IBFT produces blocks the coinbase may correspond to an empty account (as mining rewards are not paid out). In this case allow GraphQL to return an all zero account for the empty account only in context of a miner. Other tests exist that verify a plain accounts query of a non-existent account continues to throws an exception. Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>pull/1301/head
parent
88ce796a25
commit
fa89ec8323
@ -0,0 +1,53 @@ |
||||
/* |
||||
* Copyright ConsenSys AG. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with |
||||
* the License. You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on |
||||
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the |
||||
* specific language governing permissions and limitations under the License. |
||||
* |
||||
* SPDX-License-Identifier: Apache-2.0 |
||||
*/ |
||||
package org.hyperledger.besu.ethereum.api.graphql.internal.pojoadapter; |
||||
|
||||
import org.hyperledger.besu.ethereum.core.Address; |
||||
import org.hyperledger.besu.ethereum.core.Wei; |
||||
|
||||
import java.util.Optional; |
||||
|
||||
import graphql.schema.DataFetchingEnvironment; |
||||
import org.apache.tuweni.bytes.Bytes; |
||||
import org.apache.tuweni.bytes.Bytes32; |
||||
|
||||
@SuppressWarnings("unused") // reflected by GraphQL
|
||||
public class EmptyAccountAdapter extends AdapterBase { |
||||
private final Address address; |
||||
|
||||
public EmptyAccountAdapter(final Address address) { |
||||
this.address = address; |
||||
} |
||||
|
||||
public Optional<Address> getAddress() { |
||||
return Optional.of(address); |
||||
} |
||||
|
||||
public Optional<Wei> getBalance() { |
||||
return Optional.of(Wei.ZERO); |
||||
} |
||||
|
||||
public Optional<Long> getTransactionCount() { |
||||
return Optional.of(0L); |
||||
} |
||||
|
||||
public Optional<Bytes> getCode() { |
||||
return Optional.of(Bytes.EMPTY); |
||||
} |
||||
|
||||
public Optional<Bytes32> getStorage(final DataFetchingEnvironment environment) { |
||||
return Optional.of(Bytes32.ZERO); |
||||
} |
||||
} |
Loading…
Reference in new issue