We consider the problem of implementing transactional memory in large-scale distributed networked systems. We present and analyze Spiral, a novel distributed directory-based protocol for transactional memory. Spiral is designed for the data-flow distributed implementation of software transactional memory which supports three basic operations: publish, allowing a shared object to be inserted in the directory so that other nodes can find it, lookup, providing a read-only copy of the object to the requesting node, move, allowing the requesting node to write the object locally after the node gets it. The protocol runs on a hierarchical directory construction based on sparse covers, where clusters at each level are ordered to avoid race conditions while serving concurrent requests. Given a shared object the protocol maintains a directory path pointing to the object. The basic idea is to use "spiral" paths that grow outward to search for the directory path of the object in a bottom-up fashion. For general networks, this protocol guarantees an O(log 2 n · log D) approximation for move requests, where n is the number of nodes and D is the diameter of the network. It also guarantees poly-log approximation for lookup requests. To the best of our knowledge, this is the first consistency protocol for distributed transactional memory that achieves poly-log approximation in general networks.