bosagora / agora

POC Node implementation for CoinNet
https://bosagora.io
MIT License
37 stars 23 forks source link

TestNet: Document running a validator using a service to provide secure URL #3241

Closed hewison-chris closed 2 years ago

hewison-chris commented 2 years ago

When running Agora as a Validator it is required to provide a public endpoint for other validators to reach for communication. Using something like https://ngrok.com/ will make this easier from say a laptop or home server. This should work with docker image and also binary.

linked0 commented 2 years ago

We can have ngrok public URLs using ngrok as follows. All the URLs are different for all the protocols as you can see.

Forwarding                    tcp://0.tcp.ngrok.io:12466 -> localhost:2826
Forwarding                    http://0efe-211-179-51-66.ngrok.io -> http://localhost:8080
Forwarding                    https://0efe-211-179-51-66.ngrok.io -> http://localhost:8080
Forwarding                    tcp://8.tcp.ngrok.io:13713 -> localhost:8053
linked0 commented 2 years ago

Need to test on the current live TestNet. We did not test on the TestNet because it was not available at that time.

linked0 commented 2 years ago

Found an error that only occurred in my local machine running with ngrok as follows. It occurs continuously. Will analyze more the reason.

core.exception.OutOfMemoryError@core/lifetime.d(137): Memory allocation failed
----------------
??:? onOutOfMemoryError [0x10ccde38d]
??:? _d_newarrayU [0x10cd0e2ca]
??:? pure nothrow agora.consensus.data.Enrollment.Enrollment[] std.array.arrayAllocImpl!(false, agora.consensus.data.Enrollment.Enrollment[], ulong).arrayAllocImpl(ulong) [0x10bdb79fb]
??:? pure nothrow @trusted agora.consensus.data.Enrollment.Enrollment[] std.array.uninitializedArray!(agora.consensus.data.Enrollment.Enrollment[], ulong).uninitializedArray(ulong) [0x10bdb7894]
??:? pure nothrow @trusted agora.consensus.data.Enrollment.Enrollment[] std.array.array!(std.algorithm.iteration.MapResult!(agora.serialization.Serializer.deserializeArray!(agora.consensus.data.Enrollment.Enrollment[]).deserializeArray(ulong, scope const(ubyte)[] delegate(ulong) @safe, in agora.serialization.Serializer.DeserializerOptions).__lambda4, std.range.iota!(ulong, ulong).iota(ulong, ulong).Result).MapResult).array(std.algorithm.iteration.MapResult!(agora.serialization.Serializer.deserializeArray!(agora.consensus.data.Enrollment.Enrollment[]).deserializeArray(ulong, scope const(ubyte)[] delegate(ulong) @safe, in agora.serialization.Serializer.DeserializerOptions).__lambda4, std.range.iota!(ulong, ulong).iota(ulong, ulong).Result).MapResult).__lambda6() [0x10bdb787b]
??:? @safe agora.consensus.data.Enrollment.Enrollment[] std.array.array!(std.algorithm.iteration.MapResult!(agora.serialization.Serializer.deserializeArray!(agora.consensus.data.Enrollment.Enrollment[]).deserializeArray(ulong, scope const(ubyte)[] delegate(ulong) @safe, in agora.serialization.Serializer.DeserializerOptions).__lambda4, std.range.iota!(ulong, ulong).iota(ulong, ulong).Result).MapResult).array(std.algorithm.iteration.MapResult!(agora.serialization.Serializer.deserializeArray!(agora.consensus.data.Enrollment.Enrollment[]).deserializeArray(ulong, scope const(ubyte)[] delegate(ulong) @safe, in agora.serialization.Serializer.DeserializerOptions).__lambda4, std.range.iota!(ulong, ulong).iota(ulong, ulong).Result).MapResult) [0x10bdb76d1]
??:? @safe agora.consensus.data.Enrollment.Enrollment[] agora.serialization.Serializer.deserializeArray!(agora.consensus.data.Enrollment.Enrollment[]).deserializeArray(ulong, scope const(ubyte)[] delegate(ulong) @safe, in agora.serialization.Serializer.DeserializerOptions) [0x10bdb784b]
??:? @safe agora.consensus.data.Enrollment.Enrollment[] agora.serialization.Serializer.deserializeFull!(agora.consensus.data.Enrollment.Enrollment[]).deserializeFull(scope const(ubyte)[] delegate(ulong) @safe, in agora.serialization.Serializer.DeserializerOptions) [0x10c2c5335]
??:? @safe agora.consensus.data.Enrollment.Enrollment[] agora.serialization.Serializer.deserializeFull!(agora.consensus.data.Block.BlockHeader).deserializeFull(scope const(ubyte)[] delegate(ulong) @safe, in agora.serialization.Serializer.DeserializerOptions).convert!(agora.consensus.data.Enrollment.Enrollment[]).convert() [0x10c2c48b7]
??:? @safe agora.consensus.data.Block.BlockHeader agora.serialization.Serializer.deserializeFull!(agora.consensus.data.Block.BlockHeader).deserializeFull(scope const(ubyte)[] delegate(ulong) @safe, in agora.serialization.Serializer.DeserializerOptions) [0x10c2c4795]
??:? @safe agora.consensus.data.Block.BlockHeader agora.serialization.Serializer.deserializeArray!(agora.consensus.data.Block.BlockHeader[]).deserializeArray(ulong, scope const(ubyte)[] delegate(ulong) @safe, in agora.serialization.Serializer.DeserializerOptions).__lambda4!(ulong).__lambda4(ulong) [0x10c2d4136]
??:? @property @safe agora.consensus.data.Block.BlockHeader std.algorithm.iteration.MapResult!(agora.serialization.Serializer.deserializeArray!(agora.consensus.data.Block.BlockHeader[]).deserializeArray(ulong, scope const(ubyte)[] delegate(ulong) @safe, in agora.serialization.Serializer.DeserializerOptions).__lambda4, std.range.iota!(ulong, ulong).iota(ulong, ulong).Result).MapResult.front() [0x10bef7076]
??:? @safe agora.consensus.data.Block.BlockHeader[] std.array.array!(std.algorithm.iteration.MapResult!(agora.serialization.Serializer.deserializeArray!(agora.consensus.data.Block.BlockHeader[]).deserializeArray(ulong, scope const(ubyte)[] delegate(ulong) @safe, in agora.serialization.Serializer.DeserializerOptions).__lambda4, std.range.iota!(ulong, ulong).iota(ulong, ulong).Result).MapResult).array(std.algorithm.iteration.MapResult!(agora.serialization.Serializer.deserializeArray!(agora.consensus.data.Block.BlockHeader[]).deserializeArray(ulong, scope const(ubyte)[] delegate(ulong) @safe, in agora.serialization.Serializer.DeserializerOptions).__lambda4, std.range.iota!(ulong, ulong).iota(ulong, ulong).Result).MapResult) [0x10bef6eab]
??:? @safe agora.consensus.data.Block.BlockHeader[] agora.serialization.Serializer.deserializeArray!(agora.consensus.data.Block.BlockHeader[]).deserializeArray(ulong, scope const(ubyte)[] delegate(ulong) @safe, in agora.serialization.Serializer.DeserializerOptions) [0x10bef6fcb]
??:? @safe agora.consensus.data.Block.BlockHeader[] agora.serialization.Serializer.deserializeFull!(agora.consensus.data.Block.BlockHeader[]).deserializeFull(scope const(ubyte)[] delegate(ulong) @safe, in agora.serialization.Serializer.DeserializerOptions) [0x10c2537b5]
??:? @safe void agora.network.RPC.RPCClient!(agora.api.Validator.API).RPCClient.getBlockHeaders(agora.common.Set.Set!(ulong).Set).__lambda12() [0x10c253710]
??:? @safe agora.common.Types.Height agora.network.RPC.RPCClient!(agora.api.Validator.API).RPCClient.postPreimage(in ref agora.consensus.data.PreImageInfo.PreImageInfo) [0x10c25800e]
??:? nothrow agora.common.Types.Height agora.network.Client.NetworkClient.attemptRequest!(agora.api.FullNode.API.postPreimage(in ref agora.consensus.data.PreImageInfo.PreImageInfo), 0, 1, agora.consensus.data.PreImageInfo.PreImageInfo).attemptRequest(ref agora.consensus.data.PreImageInfo.PreImageInfo, immutable(char)[], uint) [0x10c0fce45]
??:? nothrow void agora.network.Client.NetworkClient.handleGossip(agora.network.Client.NetworkClient.GossipEvent) [0x10c2864fd]
??:? void agora.network.Client.NetworkClient.gossipTask() [0x10c286235]
??:? nothrow @trusted void agora.common.Task.ITaskManager.toSafeHandler(void delegate()).__lambda2().__lambda1() [0x10c3189b7]
??:? nothrow @safe void agora.common.Task.ITaskManager.toSafeHandler(void delegate()).__lambda2() [0x10c31899c]
??:? nothrow @safe void vibe.core.core.createTimer(void delegate() nothrow @safe).C.opCall(vibe.core.core.Timer).__lambda2(vibe.core.core.Timer) [0x10ca8a661]
??:? nothrow void vibe.core.task.TaskFuncInfo.set!(void delegate(vibe.core.core.Timer) nothrow @safe, vibe.core.core.Timer).set(ref void delegate(vibe.core.core.Timer) nothrow @safe, ref vibe.core.core.Timer).callDelegate(ref vibe.core.task.TaskFuncInfo) [0x10cad47f5]
??:? void vibe.core.task.TaskFuncInfo.call() [0x10cad209b]
??:? nothrow void vibe.core.task.TaskFiber.run() [0x10cad163d]
??:? fiber_entryPoint [0x10ccfbd33]
[1]    92494 abort      ./agora -c my_config.yaml --testnet