Programming

From Mirror Swarm
Revision as of 08:20, 12 January 2020 by John (talk | contribs)
Jump to navigation Jump to search

Setting standards and constraints first is a good idea.

These minibots are small small small and they have microprocessors built of dirt on an alien planet. I don't expect them to be powerful and I don't imagine they'll each have a lot of memory. On the other hand, programming this entire swarm in assembler or C isn't going to necessarily be the best option available.

Alternatively, consider whether the architecture can be a microcontroller (MCU) manufactured on Earth. The rest of the minibot can be locally constructed but the standard SoC can be part of the initial fab. Clearly this involves resupply launches because we're not able to send the fab with 200 trillion SoCs, but we could get the site working before resupply becomes an issue. Without a working site, nothing is going to proceed.

Cost per MCU, US$0.03. as on EEVBLOG 8-Bit OTP RISC 8MHz 2V ~ 5.5V SOP-8 PADAUK weight 0.07g and there's the STM8 higher capability from ST to look at. That would get the nastiest bit of the start-up requirement trimmed. 70kg gets a million microcontroller packages to the site for under $30,000. Maybe the minibots would have to be bigger if we started the site with so few. The MCU will be about a quarter of the minibot's weight wherever it gets made.

Each device is autonomous and addressable, it has the project in mind and it decides what to do and who to do it with. The alternative is to build overseers.

Randomly picking a task at birth gives roughly the right proportions of task seekers as are needed. It's a lot easier than looking at a trillion neighbours all trying to work out what needs fixing next.

Addresses. Let's solve this puzzle for the host as a whole, not just this single swarm. We can always step downward if we need to for practical reasons later.

Mass of host as mols times Avogadro's constant / atoms per device = number of addresses needed given full conversion:

3.3E23kg / 0.054 * 6E23 / 3.6E10 = 1E38 addresses

which is roughly 2^117

and we said 0.1% efficiency, = 1E35 addresses

and we said 1% of host, =1E33 addresses.

which is roughly 2^100, but both figures are under 2^128, which is a fair address length if we want a bit of slack. The length of an IPv6 address is 128 bits. Clearly someone's done this calculation ahead of me. IPv6 has approximately 3.4E38 addresses, so we have ourselves a viable addressing scheme. I suggest we find an unused reserved bit near the end (there appear to be at least 11) and set it to 1 so we can never clash with the Internet, since we're not going to apply for address space from a terrestrial net-master.

I do not as yet know how an autonomous bot can self-assign a unique address. I don't think it can happen.