Immutability in Go: Post mortem from a DoS-ed blockchain

The tried-and-true approach to sharing memory in Go is via communication. Yet there are scenarios where the amount of data is prohibitively expensive to pass around. Instead of falling back to locks, immutable data structures provide an alternative way, where we can achieve concurrent access to shared memory while at the same time make reasoning about complexity much easier.