Comments (20)
wip
I've been reading the docs and from what I can tell, the important features of the client that need to be supported is ETH2 ready, because of the support of API calls:
engine_forkchoiceUpdatedV1
engine_newpayloadv1
engine_getpayloadv1
Looking at Besu, Nethermind and Erigon - they're all ETH2 ready.
Next, P2P networking is strictly optional
DiscV5
eth/66
The last protocol implementation is eth/67 (https://eips.ethereum.org/EIPS/eip-4938#backwards-compatibility) but all still (only go-eth at the time of writting supports eth/67, erigon follows) support eth/66. And the changes are added so that they're backwards compatible.
from boba_legacy.
As said, what would be useful is to see how we can compile erigon (or others) to mips: https://github.com/ethereum/go-ethereum/pull/23800/files
from boba_legacy.
Some things:
Nethermind:
-
.NET Core (at least enables us to run the client in Docker containers as well as on Non-Windows OS (with .NET Framework, we would have needed specific versions, Docker EE, etc.), went through that pain a few years ago.
-
C# in general much easier to learn, but since that the team is already used to Go, that wouldn't make much sense imho as it is a new ecosystem anyway.
Erigon:
-
Go, from a purely economical perspective that alone is a strong argument for it, since the internal team already worked with Geth, and is used to Golang.
-
Way more stars, etc on GH, seems to be more mature (way more commits), also less open issues, etc. than Nethermind.
Bedrock requirements:
- Erigon:
Simply based on GH issues by searching for post-merge/PoS: Looks already very good even without looking for the specific API calls mentioned in the Bedrock docs.
And based on their docs, they support these API methods as well:
https://github.com/ledgerwatch/erigon/blob/devel/cmd/rpcdaemon/README.md
For me personally this would be a no-brainer, but I definitely don't have all the information, since I don't know our infrastructure that well as you all do.
Happy for feedback, hope it helps.
from boba_legacy.
@InoMurko Could it make sense, to actually use the exact same Geth version Bedrock will be using to have a smooth as possible Bedrock migration and to migrate to another client after we successfully migrated to Bedrock? Or do you think, that this is fairly easy and comes without that many additional risks / potential delays?
Could be a (slightly) higher workload, but it could make things smoother, more stable, more secure and give us a faster time to market to not loose market share to Optimism or other Optimistic roll-ups at Bedrock launch. But yeah since client changes are close to non-existent seemingly, it could make sense to actually switch the client right away, happy for feedback!
from boba_legacy.
Erigon:
Building go project with GOARCH=mips
should work (for my understanding we just need to add it in their release Makefile
.
https://zchee.github.io/golang-wiki/GoMips/
Erigon itself has no documentation on that, but I requested Discord community access and opened a discussion on their GH.
They currently don't provide any binaries in general, so we need to build it ourselves anyway.
erigontech/erigon#4153
But I think compiling for Mips shouldn't be an issue (need to actually try this) since we are talking about a Go project here, and Go seems to support Mips out-of-the-box (plus that Geth built for Mips as well and just discontinued to do so, since xgo stopped supporting it).
Just asked in the Erigon Discord community: Got the confirmation that the Mips binary is even compiled automatically.
Happy for feedback.
from boba_legacy.
Just asked in the Erigon Discord community: Got the confirmation that the Mips binary is even compiled automatically.
Where is that being done?
from boba_legacy.
from boba_legacy.
Aha, because you mentioned automatically, I thought it's done somewhere in their CICD.
from boba_legacy.
No they don't have any official binaries:
erigontech/erigon#4153
from boba_legacy.
@wsdt can you fork Erigon, and make a circleci integration that compiles it to mips32?
from boba_legacy.
sure!
from boba_legacy.
@InoMurko just had a chat with Michael yesterday, he is also working on it. Just to keep you posted, that we both have a look at it.
from boba_legacy.
@mmontour1306 @InoMurko Just got the confirmation, that Erigon might NEVER support 32x architectures at all.
The issues Michael and me encountered, seem to be bugs/issues with libraries they are using. Would mips64 also be an option @InoMurko ?
Raspberry works with Erigon, so according to them mips64 might/should work. Need to try today.
from boba_legacy.
@InoMurko mips64
returns the exact same error messages for me, just asked in the Discord again.
Another question, why don't we simply use their Docker image?
from boba_legacy.
When run in prefetch mode, minigeth's role is to retrieve all the (hash -> preimage) mappings that are necessary to run the MIPS version of minigeth.
So the minigeth
is a subset of geth
:
As per cannon readme, minigeth is:
The pieces of geth needed to verify a block
See `../sync_minigeth.sh`, most of this is just geth and we can copy many of the files
The database has been abstracted in the `oracle/`, this does not use leveldb
Running on PC, it fetches all the required pieces of state from RPC.
Running on MIPS, it uses the oracle MMIO interface to get state based on hash.
So the question is - any idea which pieces prevent mips32?
from boba_legacy.
The Go language itself seems to have good support for a MIPS target, but it gets more difficult when you are trying to wrap a C library as is done with the cryptographic secp256k1 library. I have not been able to make that work while cross-compiling from my main desktop. I'm presently trying a native build of erigon inside my MIPS VM (last attempt ran out of disk space). It's slow and very memory-limited so I am not sure how far it will get.
64-bit might be an option, but the ultimate goal is to support a very stripped-down instruction set which can be implemented in an on-chain smart contract. That's probably easier with 32-bit registers.
from boba_legacy.
Really seems to be an issue also for both mips{32 and 64}
from boba_legacy.
Really seems to be an issue also for both mips{32 and 64}
Is Erigon2 a rewrite or the same repo? What are the changes?
from boba_legacy.
Is Erigon2 a rewrite or the same repo? What are the changes?
https://erigon.substack.com/p/erigon-2-three-upgrades?s=r
Found this :-)
from boba_legacy.
Let's see where Erigon brings us.
from boba_legacy.
Related Issues (20)
- Gateway : Glitches in network switch sometimes
- Gateway: Refactor the Dropdown and use same across gateway HOT 1
- Add bundle analyzer and investigate what causing the bundle size increasing HOT 3
- Gateway: Try and React Lazy loading if possible
- Gateway : Gziping bundles to reduce the bundle size to load on low network HOT 1
- Replace Infura with Tenderly
- Gateway: Git Actions to run the Integration test!
- Gateway: Dao Is failing with error to get the gql query
- Gateway: Loading or fallback screen design needed. HOT 1
- Gateway [Stake]
- TypeError: Cannot read properties of undefined (reading 'attach')
- Wrong native Asset on RouteScan for Boba BNB HOT 6
- Fraud-detector can't to start HOT 5
- Adapt PoWFaucet HOT 1
- Consider Dual-Asset support for PoWFaucet HOT 3
- Deploy Light bridge for OP/ARB HOT 1
- [TBD] Deploying BOBA token on Optimism/Arbitrum to support bridging via Light bridge
- Support Prometheus metrics?
- Full archive mainnet node from snapshot working but not syncing new blocks? HOT 2
- No 'type' field
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from boba_legacy.