From 37c086c5595669491034f44e3d570dc5f32798e4 Mon Sep 17 00:00:00 2001
From: Yoshihito Aso
Date: Wed, 10 Jun 2026 09:09:08 +0900
Subject: [PATCH] Rename to ibet-Core
---
.github/dependabot.yml | 4 +-
BUILDING.md | 19 -------
NOTES.md | 112 -----------------------------------------
README.md | 35 ++++++-------
4 files changed, 20 insertions(+), 150 deletions(-)
delete mode 100644 BUILDING.md
delete mode 100644 NOTES.md
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 6271a45ab..4995644e5 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -11,7 +11,7 @@ updates:
prefix: "chore(go)"
include: "scope"
ignore:
- # Quorum relies on a forked etcd replacement pinned in go.mod.
+ # ibet-Core relies on the forked etcd replacement pinned in go.mod.
- dependency-name: "github.com/coreos/etcd"
groups:
all-dependencies:
@@ -31,4 +31,4 @@ updates:
groups:
all-dependencies:
patterns:
- - "*"
\ No newline at end of file
+ - "*"
diff --git a/BUILDING.md b/BUILDING.md
deleted file mode 100644
index 0d49b2e6e..000000000
--- a/BUILDING.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# Building Quorum
-
-Note: Building Quorum requires both a Go (version 1.9 or later) and a C compiler. You can install them using your favourite package manager.
-
-Clone the repository and build the source:
-
-```
-git clone https://github.com/BoostryJP/quorum.git
-cd quorum
-make all
-make test
-```
-
-Binaries are placed within `./build/bin`, most notably `geth` and `bootnode`. Either add this directory to your `$PATH` or copy those two bins into your PATH:
-
-```sh
-# assumes that /usr/local/bin is in your PATH
-cp ./build/bin/geth ./build/bin/bootnode /usr/local/bin/
-```
diff --git a/NOTES.md b/NOTES.md
deleted file mode 100644
index e38ff0296..000000000
--- a/NOTES.md
+++ /dev/null
@@ -1,112 +0,0 @@
-# Hacking on Quorum / various notes
-
-## How does private state work?
-
-Original commit from Jeff explains the dual public and private state with INITIAL restrictions:
-```
-commit 763f939f4725daa136161868d3b01fa7a84eb71e
-Author: Jeffrey Wilcke
-Date: Mon Oct 31 12:46:40 2016 +0100
-
- core, core/vm: dual state & read only EVM
-
- This commit implements a dual state approach. The dual state approach
- separates public and private state by making the core vm environment
- context aware.
-
- Although not currently implemented it will need to prohibit value
- transfers and it must initialise all transactions from accounts on the
- public state. This means that sending transactions increments the
- account nonce on the public state and contract addresses are derived
- from the public state when initialised by a transaction. For obvious
- reasons, contract created by private contracts are still derived from
- public state.
-
- This is required in order to have consensus over the public state at all
- times as non-private participants would still process the transaction on
- the public state even though private payload can not be decrypted. This
- means that participants of a private group must do the same in order to
- have public consensus. However the creation of the contract and
- interaction still occurs on the private state.
-
- It implements support for the following calling model:
-
- S: sender, (X): private, X: public, ->: direction, [ ]: read only mode
-
- 1. S -> A -> B
- 2. S -> (A) -> (B)
- 3. S -> (A) -> [ B -> C ]
-
- It does not support
-
- 1. (S) -> A
- 2. (S) -> (A)
- 3. S -> (A) -> B
-
- Implemented "read only" mode for the EVM. Read only mode is checked
- during any opcode that could potentially modify the state. If such an
- opcode is encountered during "read only", it throws an exception.
-
- The EVM is flagged "read only" when a private contract calls in to
- public state.
-```
-
-
-Some things have changed since, let's look at the EVM structure in some more detail:
-
-```go
-type EVM struct {
- ...
- // StateDB gives access to the underlying state
- StateDB StateDB
- // Depth is the current call stack
- depth int
- ...
-
- publicState PublicState
- privateState PrivateState
- states [1027]*state.StateDB
- currentStateDepth uint
- readOnly bool
- readOnlyDepth uint
-}
-```
-
-The vanilla EVM has a call depth limit of 1024. Our `states` parallel the EVM call stack, recording as contracts in the public and private state call back and forth to each other. Note it doesn't have to be a "public -> private -> public -> private" back-and-forth chain. It can be any sequence of { public, private }.
-
-The interface for calling is this `Push` / `Pop` sequence:
-
-```go
-evm.Push(getDualState(evm, addr))
-defer func() { evm.Pop() }()
-// ... do work in the pushed state
-```
-
-The definitions of `Push` and `Pop` are simple and important enough to duplicate here:
-
-```go
-func (env *EVM) Push(statedb StateDB) {
- if env.privateState != statedb {
- env.readOnly = true
- env.readOnlyDepth = env.currentStateDepth
- }
-
- if castedStateDb, ok := statedb.(*state.StateDB); ok {
- env.states[env.currentStateDepth] = castedStateDb
- env.currentStateDepth++
- }
-
- env.StateDB = statedb
-}
-func (env *EVM) Pop() {
- env.currentStateDepth--
- if env.readOnly && env.currentStateDepth == env.readOnlyDepth {
- env.readOnly = false
- }
- env.StateDB = env.states[env.currentStateDepth-1]
-}
-```
-
-Note the invariant that `StateDB` always points to the current state db.
-
-The other interesting note is read only mode. Any time we call from the private state into the public state (`env.privateState != statedb`), we require anything deeper to be *read only*. Private state transactions can't affect public state, so we throw an EVM exception on any mutating operation (`SELFDESTRUCT, CREATE, SSTORE, LOG0, LOG1, LOG2, LOG3, LOG4`). Question: have any more mutating operations been added? Question: could we not mutate deeper private state?
diff --git a/README.md b/README.md
index eb8bbf4e8..df01f1490 100644
--- a/README.md
+++ b/README.md
@@ -2,34 +2,34 @@
-# GoQuorum for ibet Network
+# ibet-Core
-This project is [GoQuorum](https://github.com/ConsenSys/quorum) fork for [ibet Network](https://github.com/BoostryJP/ibet-Network)
+ibet-Core is a [GoQuorum](https://github.com/ConsenSys/quorum)-derived node client optimized for [ibet Network](https://github.com/BoostryJP/ibet-Network).
-## Version control policy
+## Overview
-This project is a fork of GoQuorum (and go-ethereum), and we decide which version of GoQuorum to adopt when developing each version and reflect those modules.
-In addition, it has been modified to be optimal for the ibet Network.
+ibet-Core builds on GoQuorum and its go-ethereum foundation while adding changes required to run ibet Network efficiently and securely.
+It is an EVM-compatible blockchain node client derived from go-ethereum, inheriting the execution model and tooling ecosystem used by Ethereum clients.
+The project adopts a suitable GoQuorum version for each ibet-Core release, then applies ibet Network-specific patches and dependency updates.
The version control policy of this project follows that of ibet-Network.
-## Reference GoQuorum version
+## Features
-Currently, the ibet Network is built using a node client based on v24.4.0 of GoQuorum.
-However, it has been variously patched to be optimized for ibet Network. For example:
+ibet-Core incorporates the final GoQuorum upstream baseline adopted by this project and includes the following ibet Network-focused changes:
- The default block generation interval is set to 1 second.
-- Fully supports Go 1.25 and applies new 3rd party packages from a security perspective.
-- Made temporary fixes for bugs before they were fixed in the original GoQuorum.
+- Go 1.25 is supported, with third-party packages updated from a security perspective.
+- Temporary fixes are applied for selected issues before they are fixed in the original GoQuorum.
- Added precompile for secp256r1 signature verification ([EIP-7951](https://eips.ethereum.org/EIPS/eip-7951)).
- Added precompile for BLS12-381 curve operations ([EIP-2537](https://eips.ethereum.org/EIPS/eip-2537)).
- Added support for AWS Secrets Manager / KMS based node key management.
-## Building the source
-Building quorum requires both a Go (version 1.25) and a C compiler.
+## Building ibet-Core
+Building ibet-Core requires both a Go (version 1.25) and a C compiler.
You can install them using your favourite package manager.
Once the dependencies are installed, run
```
@@ -48,13 +48,14 @@ For AWS Secrets Manager / KMS based node key setup, see
## License
-The go-ethereum library (i.e. all code outside of the `cmd` directory) is licensed under the
+ibet-Core is derived from GoQuorum and go-ethereum. This name change does not change the licenses of the upstream-derived code or bundled third-party components.
+
+The go-ethereum library code (i.e. all code outside of the `cmd` directory) is licensed under the
[GNU Lesser General Public License v3.0](https://www.gnu.org/licenses/lgpl-3.0.en.html), also
-included in our repository in the `COPYING.LESSER` file.
+included in this repository in the `COPYING.LESSER` file.
-The go-ethereum binaries (i.e. all code inside of the `cmd` directory) is licensed under the
+The go-ethereum binary code (i.e. all code inside of the `cmd` directory) is licensed under the
[GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0.en.html), also included
-in our repository in the `COPYING` file.
+in this repository in the `COPYING` file.
Any project planning to use the `crypto/secp256k1` sub-module must use the specific [secp256k1 standalone library](https://github.com/ConsenSys/goquorum-crypto-secp256k1) licensed under 3-clause BSD.
-