eth-pkg / eth-nodes Goto Github PK
View Code? Open in Web Editor NEWComposable, Reproducible builds for Ethereum Ecosystem (Debian/Ubuntu)
License: GNU Affero General Public License v3.0
Composable, Reproducible builds for Ethereum Ecosystem (Debian/Ubuntu)
License: GNU Affero General Public License v3.0
Based on official docs
There is enough disk space considering the chosen network and sync mode.
Memory and CPU is not halted by other programs.
Operating system is updated to the latest version.
System has the correct time and date.
Your router and firewall accept connections on listening ports. By default Ethereum clients use a listener (TCP) port and a discovery (UDP) port, both on 30303 by default
Not building from a git checkout. Version information will not be available. Building from a git checkout is strongly recommended.
Acceptance criteria:
The Lighthouse build is failing under build env.
CKZG4844UtilsTest > testFlattenBlobsWithUnexpectedSizeThrows() FAILED
org.opentest4j.AssertionFailedError at CKZG4844UtilsTest.java:42
CKZG4844UtilsTest > testFlattenBlobsWithBigBoySizeThrows() FAILED
org.opentest4j.AssertionFailedError at CKZG4844UtilsTest.java:53
21 tests completed, 2 failed
> Task :infrastructure:kzg:test FAILED
> Task :teku:test
Exception in thread "nioEventLoopGroup-4-1" java.util.concurrent.CompletionException: java.util.concurrent.RejectedExecutionException: Task tech.pegasys.teku.infrastructure.events.AsyncEventDeliverer$QueueReader@1279c4ab rejected from java.util.concurrent.ThreadPoolExecutor@42b81fe8[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 0]
at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
at java.base/java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:722)
at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147)
at tech.pegasys.teku.infrastructure.async.SafeFuture.lambda$propagateResult$3(SafeFuture.java:146)
at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841)
at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147)
at tech.pegasys.teku.infrastructure.async.SafeFuture.lambda$propagateResult$3(SafeFuture.java:146)
at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
at java.base/java.util.concurrent.CompletableFuture.uniWhenCompleteStage(CompletableFuture.java:887)
at java.base/java.util.concurrent.CompletableFuture.whenComplete(CompletableFuture.java:2325)
at tech.pegasys.teku.infrastructure.async.SafeFuture.whenComplete(SafeFuture.java:623)
at tech.pegasys.teku.infrastructure.async.SafeFuture.whenComplete(SafeFuture.java:31)
at tech.pegasys.teku.infrastructure.async.SafeFuture.propagateResult(SafeFuture.java:141)
at tech.pegasys.teku.infrastructure.async.SafeFuture.lambda$exceptionallyCompose$34(SafeFuture.java:423)
at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841)
at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147)
at tech.pegasys.teku.infrastructure.async.SafeFuture.lambda$propagateResult$3(SafeFuture.java:146)
at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841)
at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147)
at tech.pegasys.teku.infrastructure.async.SafeFuture.lambda$propagateResult$3(SafeFuture.java:146)
at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841)
at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147)
at org.ethereum.beacon.discovery.network.NettyDiscoveryServerImpl.lambda$startServer$1(NettyDiscoveryServerImpl.java:101)
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:590)
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:557)
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:492)
at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:636)
at io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:625)
at io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:105)
at io.netty.channel.DefaultChannelPromise.trySuccess(DefaultChannelPromise.java:84)
at io.netty.channel.AbstractChannel$AbstractUnsafe.safeSetSuccess(AbstractChannel.java:990)
at io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.java:578)
at io.netty.channel.DefaultChannelPipeline$HeadContext.bind(DefaultChannelPipeline.java:1334)
at io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:600)
at io.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.java:579)
at io.netty.handler.logging.LoggingHandler.bind(LoggingHandler.java:230)
at io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:602)
at io.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.java:579)
at io.netty.channel.DefaultChannelPipeline.bind(DefaultChannelPipeline.java:973)
at io.netty.channel.AbstractChannel.bind(AbstractChannel.java:260)
at io.netty.bootstrap.AbstractBootstrap$2.run(AbstractBootstrap.java:356)
at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:166)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:842)
Caused by: java.util.concurrent.RejectedExecutionException: Task tech.pegasys.teku.infrastructure.events.AsyncEventDeliverer$QueueReader@1279c4ab rejected from java.util.concurrent.ThreadPoolExecutor@42b81fe8[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 0]
at java.base/java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2065)
at java.base/java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:833)
at java.base/java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1365)
at tech.pegasys.teku.infrastructure.events.AsyncEventDeliverer.subscribe(AsyncEventDeliverer.java:60)
at tech.pegasys.teku.infrastructure.events.EventChannel.subscribeMultithreaded(EventChannel.java:167)
at tech.pegasys.teku.infrastructure.events.EventChannels.subscribeMultithreaded(EventChannels.java:102)
at tech.pegasys.teku.infrastructure.events.EventChannels.subscribe(EventChannels.java:84)
at tech.pegasys.teku.networking.eth2.ActiveEth2P2PNetwork.startup(ActiveEth2P2PNetwork.java:128)
at tech.pegasys.teku.networking.eth2.ActiveEth2P2PNetwork.lambda$start$0(ActiveEth2P2PNetwork.java:122)
at java.base/java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:718)
... 56 more
FAILURE: Build failed with an exception.
There were failing tests. See the report at: file:///<>/infrastructure/kzg/build/reports/tests/test/index.html
Acceptance criteria:
Test if different client versions if configuration changed, can be upgraded.
Acceptance criteria:
Currently running the packaging process, some clients still result in the wrong hash, even though the dependencies are the same and the build environment is reproducible.
Completion criteria:
Check all clients, and run the verify command to see the hash. Please note that lodestar might not be reproducible.
Acceptance criteria:
Acceptance criteria:
Integrate dotnet building
Readme is outdated, needs to be updated with the current supports.
Acceptance criteria:
Configs and service packages should be easy to rebuild so configs can be tested and shipped easily.
Acceptance criteria:
Is it possible to make docker work inside of chroot?
Integrate build environment for bazel
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/eth-node-prysm/usr/lib/eth-node-prysm/bin/validator debian/eth-node-prysm/usr/lib/eth-node-prysm/bin/beacon-chain were not linked against libdl.so.2 (they use none of the library's symbols)
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/eth-node-prysm/usr/lib/eth-node-prysm/bin/validator debian/eth-node-prysm/usr/lib/eth-node-prysm/bin/beacon-chain were not linked against libresolv.so.2 (they use none of the library's symbols)
dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/eth-node-prysm/usr/lib/eth-node-prysm/bin/validator debian/eth-node-prysm/usr/lib/eth-node-prysm/bin/beacon-chain were not linked against libpthread.so.0 (they use none of the library's symbols)
Acceptance criteria:
Add build for checking if packages are built
There are two questions here:
apt
fails to install if adding as suchThe main problem here is that the chroot environment requires ca-certificates
present to add additional repositories as the repositories are external.
The second problem is that additional repositories are non-uniform, so adding them is not an easy feat.
Time should be synced for nodes.
Cand node.js projects built with reproducibility in mind? Locking packages does allow for the same dependency, but the build process or hashes of built modules still could be different.
The chroot environment is reproducible, but it points against Debian, which means it is not fully reproducible. It will create different environments at different points in time, which might be a problem.
The same issue might arise using apt install when the latest packages are fetched.
Debian requires packages to be rebuilt into Debian packages, while the clients download from GitHub. This is conflicting, and the dependencies should be the ones defined by the original authors, not the ones in Debian.
Completion Criteria:
Explain in docs how ethereum nodes virtual package system works.
Acceptance criteria:
Note: this is both the execution and consensus client configuration
The build system for dh-ethpkg-golang needs to be integrated
error: missing fields
┌─ [email protected]:1:1
│
1 │ name = "eth-node-geth-service-@variant"
│ ^ ty, summary, priority are missing
Failed! - Failed: 1, Passed: 859, Skipped: 11, Total: 871, Duration: 2 m 50 s - Nethermind.Blockchain.Test.dll (net7.0)
Nethermind.AuRa.Test -> /<<PKGBUILDDIR>>/src/Nethermind/Nethermind.AuRa.Test/bin/Release/net7.0/Nethermind.AuRa.Test.dll
Test run for /<<PKGBUILDDIR>>/src/Nethermind/Nethermind.AuRa.Test/bin/Release/net7.0/Nethermind.AuRa.Test.dll (.NETCoreApp,Version=v7.0)
Keeping a node online
Your node doesn't have to be online all the time, but you should keep it online as much as possible to keep it in sync with the network. You can shut it down to restart it, but keep in mind that:
Shutting down can take a few minutes if the recent state is still being written on disk.
Forced shut downs can damage the database requiring you to resync the entire node.
Your client will go out of sync with the network and will need to resync when you restart it. While the node can begin syncing from were it was last shutdown, the process can take time depending on how long it has been offline.
error: missing fields
┌─ [email protected]:1:1
│
1 │ name = "eth-node-geth-service-@variant"
│ ^ ty, summary, priority are missing
Integrate dh-ethpkg-rust
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.