-
Notifications
You must be signed in to change notification settings - Fork 897
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added object classes for deposit fields
- Loading branch information
Showing
11 changed files
with
357 additions
and
43 deletions.
There are no files selected for viewing
84 changes: 84 additions & 0 deletions
84
datatypes/src/main/java/org/hyperledger/besu/datatypes/BLSPublicKey.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
/* | ||
* Copyright contributors to Hyperledger Besu | ||
* | ||
* 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.datatypes; | ||
|
||
import com.fasterxml.jackson.annotation.JsonCreator; | ||
import org.apache.tuweni.bytes.Bytes; | ||
import org.apache.tuweni.bytes.DelegatingBytes; | ||
import org.hyperledger.besu.ethereum.rlp.RLPException; | ||
import org.hyperledger.besu.ethereum.rlp.RLPInput; | ||
|
||
import static com.google.common.base.Preconditions.checkArgument; | ||
|
||
/** A BLS public key. */ | ||
public class BLSPublicKey extends DelegatingBytes implements org.hyperledger.besu.plugin.data.PublicKey { | ||
|
||
/** The constant SIZE. */ | ||
public static final int SIZE = 48; | ||
|
||
/** | ||
* Instantiates a new BLSPublicKey. | ||
* | ||
* @param bytes the bytes | ||
*/ | ||
protected BLSPublicKey(final Bytes bytes) { | ||
super(bytes); | ||
} | ||
|
||
/** | ||
* Wrap public key. | ||
* | ||
* @param value the value | ||
* @return the BLS public key | ||
*/ | ||
public static BLSPublicKey wrap(final Bytes value) { | ||
checkArgument( | ||
value.size() == SIZE, | ||
"A BLS public key must be %s bytes long, got %s", | ||
SIZE, | ||
value.size()); | ||
return new BLSPublicKey(value); | ||
} | ||
|
||
/** | ||
* Creates a bls public key from the given RLP-encoded input. | ||
* | ||
* @param input The input to read from | ||
* @return the input's corresponding public key | ||
*/ | ||
public static BLSPublicKey readFrom(final RLPInput input) { | ||
final Bytes bytes = input.readBytes(); | ||
if (bytes.size() != SIZE) { | ||
throw new RLPException( | ||
String.format("BLSPublicKey unexpected size of %s (needs %s)", bytes.size(), SIZE)); | ||
} | ||
return BLSPublicKey.wrap(bytes); | ||
} | ||
|
||
/** | ||
* Parse a hexadecimal string representing an public key. | ||
* | ||
* @param str A hexadecimal string (with or without the leading '0x') representing a valid bls public key. | ||
* @return The parsed bls public key: {@code null} if the provided string is {@code null}. | ||
* @throws IllegalArgumentException if the string is either not hexadecimal, or not the valid | ||
* representation of a BLSPublicKey. | ||
*/ | ||
@JsonCreator | ||
public static BLSPublicKey fromHexString(final String str) { | ||
if (str == null) return null; | ||
return wrap(Bytes.fromHexStringLenient(str, SIZE)); | ||
} | ||
|
||
} |
84 changes: 84 additions & 0 deletions
84
datatypes/src/main/java/org/hyperledger/besu/datatypes/BLSSignature.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
/* | ||
* Copyright contributors to Hyperledger Besu | ||
* | ||
* 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.datatypes; | ||
|
||
import com.fasterxml.jackson.annotation.JsonCreator; | ||
import org.apache.tuweni.bytes.Bytes; | ||
import org.apache.tuweni.bytes.DelegatingBytes; | ||
import org.hyperledger.besu.ethereum.rlp.RLPException; | ||
import org.hyperledger.besu.ethereum.rlp.RLPInput; | ||
|
||
import static com.google.common.base.Preconditions.checkArgument; | ||
|
||
/** A BLS Signature **/ | ||
public class BLSSignature extends DelegatingBytes implements org.hyperledger.besu.plugin.data.Signature { | ||
|
||
/** The constant SIZE. */ | ||
public static final int SIZE = 96; | ||
|
||
/** | ||
* Instantiates a new BLSSignature. | ||
* | ||
* @param bytes the bytes | ||
*/ | ||
protected BLSSignature(final Bytes bytes) { | ||
super(bytes); | ||
} | ||
|
||
/** | ||
* Wrap signature. | ||
* | ||
* @param value the value | ||
* @return the signature | ||
*/ | ||
public static BLSSignature wrap(final Bytes value) { | ||
checkArgument( | ||
value.size() == SIZE, | ||
"A signature must be %s bytes long, got %s", | ||
SIZE, | ||
value.size()); | ||
return new BLSSignature(value); | ||
} | ||
|
||
/** | ||
* Creates a signature from the given RLP-encoded input. | ||
* | ||
* @param input The input to read from | ||
* @return the input's corresponding signature | ||
*/ | ||
public static BLSSignature readFrom(final RLPInput input) { | ||
final Bytes bytes = input.readBytes(); | ||
if (bytes.size() != SIZE) { | ||
throw new RLPException( | ||
String.format("BLSSignature unexpected size of %s (needs %s)", bytes.size(), SIZE)); | ||
} | ||
return BLSSignature.wrap(bytes); | ||
} | ||
|
||
/** | ||
* Parse a hexadecimal string representing a signature. | ||
* | ||
* @param str A hexadecimal string (with or without the leading '0x') representing a valid bls signature. | ||
* @return The parsed signature: {@code null} if the provided string is {@code null}. | ||
* @throws IllegalArgumentException if the string is either not hexadecimal, or not the valid | ||
* representation of a bls signature. | ||
*/ | ||
@JsonCreator | ||
public static BLSSignature fromHexString(final String str) { | ||
if (str == null) return null; | ||
return wrap(Bytes.fromHexStringLenient(str, SIZE)); | ||
} | ||
|
||
} |
84 changes: 84 additions & 0 deletions
84
datatypes/src/main/java/org/hyperledger/besu/datatypes/WithdrawalCredential.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
/* | ||
* Copyright contributors to Hyperledger Besu | ||
* | ||
* 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.datatypes; | ||
|
||
import com.fasterxml.jackson.annotation.JsonCreator; | ||
import org.apache.tuweni.bytes.Bytes; | ||
import org.apache.tuweni.bytes.DelegatingBytes; | ||
import org.hyperledger.besu.ethereum.rlp.RLPException; | ||
import org.hyperledger.besu.ethereum.rlp.RLPInput; | ||
|
||
import static com.google.common.base.Preconditions.checkArgument; | ||
|
||
/** A withdrawal credential of a Deposit. */ | ||
public class WithdrawalCredential extends DelegatingBytes implements org.hyperledger.besu.plugin.data.WithdrawalCredential { | ||
|
||
/** The constant SIZE. */ | ||
public static final int SIZE = 32; | ||
|
||
/** | ||
* Instantiates a new WIthdrawalCredential. | ||
* | ||
* @param bytes the bytes | ||
*/ | ||
protected WithdrawalCredential(final Bytes bytes) { | ||
super(bytes); | ||
} | ||
|
||
/** | ||
* Wrap withdrawal crednetial. | ||
* | ||
* @param value the value | ||
* @return the withdrawal credential | ||
*/ | ||
public static WithdrawalCredential wrap(final Bytes value) { | ||
checkArgument( | ||
value.size() == SIZE, | ||
"A withdrawal credential must be %s bytes long, got %s", | ||
SIZE, | ||
value.size()); | ||
return new WithdrawalCredential(value); | ||
} | ||
|
||
/** | ||
* Creates an withdrawal credential from the given RLP-encoded input. | ||
* | ||
* @param input The input to read from | ||
* @return the input's corresponding withdrawal credential | ||
*/ | ||
public static WithdrawalCredential readFrom(final RLPInput input) { | ||
final Bytes bytes = input.readBytes(); | ||
if (bytes.size() != SIZE) { | ||
throw new RLPException( | ||
String.format("Withdrawal credential unexpected size of %s (needs %s)", bytes.size(), SIZE)); | ||
} | ||
return WithdrawalCredential.wrap(bytes); | ||
} | ||
|
||
/** | ||
* Parse a hexadecimal string representing a withdrawal credential. | ||
* | ||
* @param str A hexadecimal string (with or without the leading '0x') representing a valid withdrawal credential. | ||
* @return The parsed withdrawal credential: {@code null} if the provided string is {@code null}. | ||
* @throws IllegalArgumentException if the string is either not hexadecimal, or not the valid | ||
* representation of a withdrawal credential. | ||
*/ | ||
@JsonCreator | ||
public static WithdrawalCredential fromHexString(final String str) { | ||
if (str == null) return null; | ||
return wrap(Bytes.fromHexStringLenient(str, SIZE)); | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.