public static async Task Start([PerperTrigger] object?input, IContext context, IHashResolver hashResolver, IPeerConnector peerConnector) { var(executorAgent, _) = await context.StartAgentAsync <object?>("Apocryph-Executor", null); await executorAgent.CallActionAsync("Register", (Hash.From("AgentOne"), context.Agent, "AgentOne")); await executorAgent.CallActionAsync("Register", (Hash.From("AgentTwo"), context.Agent, "AgentTwo")); var agentStates = new[] { new AgentState(0, ReferenceData.From(new AgentOne.AgentOneState()), Hash.From("AgentOne")), new AgentState(1, ReferenceData.From(new AgentTwo.AgentTwoState()), Hash.From("AgentTwo")) }; var agentStatesTree = await MerkleTreeBuilder.CreateRootFromValues(hashResolver, agentStates, 2); Chain chain; if (Environment.GetEnvironmentVariable("SAMPLE_AGENTS_CONSENSUS") == "Dummy") { chain = new Chain(new ChainState(agentStatesTree, agentStates.Length), "Apocryph-DummyConsensus", null, 1); } else { var snowballParameters = await hashResolver.StoreAsync <object>(new SnowballParameters(15, 0.8, 25)); chain = new Chain(new ChainState(agentStatesTree, agentStates.Length), "Apocryph-SnowballConsensus", snowballParameters, 60); } var chainId = await hashResolver.StoreAsync(chain); var(_, kothStates) = await context.StartAgentAsync <IAsyncEnumerable <(Hash <Chain>, Slot?[])> >("Apocryph-KoTH", null); var minerAgentTask = context.StartAgentAsync <object?>("Apocryph-KoTH-SimpleMiner", (kothStates, new Hash <Chain>[] { chainId }));
public BlockchainUnit(string path, IIndexedStorage <long> addressStorage) { disposed = false; blockStorage = new JsonDriveAccessor <Block>(path, addressStorage); merkleRootComputer = new MerkleTreeBuilder(); digest = new SHA3Managed(512); }
public KeccakMerkleRootComputer(int hashLengthInBits) { merkleBuilder = new MerkleTreeBuilder(); digest = new SHA3Managed(hashLengthInBits); }
public MerkleTreeBuilderTests() { _hasher = A.Fake <IHasher>(); _subject = new MerkleTreeBuilder(_hasher); }