Esempio n. 1
0
        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 }));
Esempio n. 2
0
        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);
 }