Skip to main content
Log in

Atomic Read/Write Memory in Signature-Free Byzantine Asynchronous Message-Passing Systems

  • Published:
Theory of Computing Systems Aims and scope Submit manuscript

Abstract

This article presents a signature-free distributed algorithm which builds an atomic read/write shared memory on top of a fully connected peer-to-peer n-process asynchronous message-passing system in which up to t<n/3 processes may commit Byzantine failures. From a conceptual point of view, this algorithm is designed to be as close as possible to the algorithm proposed by Attiya, Bar-Noy and Dolev. J. ACM 42(1), 121–132 (1995), which builds an atomic register in an n-process asynchronous message-passing system where up to t<n/2 processes may crash. The proposed algorithm is particularly simple. It does not use cryptography to cope with Byzantine processes, and is optimal from a t-resilience point of view (t<n/3). A read operation requires O(n) messages, and a write operation requires O(n 2) messages.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1

Similar content being viewed by others

Notes

  1. This broadcast is a simple send of the same message to all processes. If a process crashes during its execution, it is possible that only a subset of the processes receive the message.

  2. In addition to the stronger necessary and sufficient condition t<n/3, this presentation style allows people aware of the ABD algorithm to see the additional statements needed to go from crash failures to Byzantine behavior.

  3. If we assume that no correct process p i reads its own register R E G[i], r s n i [i] can be used to store w s n i .

References

  1. Aiyer, A.S., Alvisi, L., Bazzi, R.A.: Bounded wait-free implementation of optimally resilient Byzantine storage without (unproven) cryptographic assumptions. In: Proceedings 21st Int?l Symposium on Distributed Computing (DISC?07), pp 7–19. Springer LNCS 4731 (2007)

  2. Attiya, H.: Efficient and robust sharing of memory in message-passing systems. J. Algorithm. 34(1), 109–127 (2000)

    Article  MathSciNet  MATH  Google Scholar 

  3. Attiya, H., Bar-Noy, A., Dolev, D.: Sharing memory robustly in message passing systems. J. ACM 42(1), 121–132 (1995)

    Article  MATH  Google Scholar 

  4. Attiya, H., Bar-Or, A.: Sharing memory with semi-Byzantine clients and faulty storage servers. Parallel Process. Lett. 16(4), 419–428 (2006)

    Article  MathSciNet  Google Scholar 

  5. Attiya, H., Welch, J.L.: Distributed computing: fundamentals, simulations and advanced topics, 2nd edn., p 414. Wiley-Interscience (2004). (ISBN 0-471-45324-2)

  6. Bracha, G.: Asynchronous Byzantine agreement protocols. Inf. Comput. 75 (2), 130–143 (1987)

    Article  MathSciNet  MATH  Google Scholar 

  7. Chaudhuri, S., Kosa, M.J., Welch, J.L.: One-write algorithms for multivalued regular and atomic registers. Acta Inf. 37(3), 161–192 (2000)

    Article  MathSciNet  MATH  Google Scholar 

  8. Chockler, G., Malkhi, D.: Active disk Paxos with infinitely many processes. Distrib. Comput. 18(1), 73–84 (2005)

    Article  MATH  Google Scholar 

  9. Dobre, D., Guerraoui, R., Majuntke, M., Suri, N., Vukolic, M.: The complexity of robust atomic storage. In: Proceedings 30th ACM Symposium on Principles of Distributed Computing (PODC?11), pp 59–68. ACM Press (2011)

  10. Guerraoui, R., Vukolic, M.: How fast can a very robust read be?. In: Proceedings 25th ACM Symposium on Principles of Distributed Computing (PODC’06), pp 248–257. ACM Press (2006)

  11. Herlihy, M.P., Wing, J.: Linearizability: a correctness condition for concurrent objects. ACM Trans. Programm. Lang. Syst. 12(3), 463–492 (1990)

    Article  Google Scholar 

  12. Imbs, D., Rajsbaum, S., Raynal, M., Stainer, J.: Read/write shared memory abstraction on top of asynchronous byzantine message-passing systems. J. Parallel Distrib. Comput. 93-94, 1–9 (2016)

    Article  MATH  Google Scholar 

  13. Ittai, A., Chockler, G., Keidar, I., Malkhi, D.: Byzantine disk Paxos: optimal resilience with byzantine shared memory. Distrib. Comput. 18(5), 387–408 (2006)

    Article  MATH  Google Scholar 

  14. Lamport, L.: On interprocess communication, Part I: basic forMalism. Distrib. Comput. 1(2), 77–85 (1986)

    Article  MathSciNet  MATH  Google Scholar 

  15. Lamport, L.: On interprocess communication, Part II: algorithms. Distrib. Comput. 1(2), 77–101 (1986)

    Article  MathSciNet  MATH  Google Scholar 

  16. Lamport, L., Shostack, R., Pease, M.: The Byzantine generals problem. ACM Trans. Programm. Lang. Syst. 4(3), 382–401 (1982)

    Article  MATH  Google Scholar 

  17. Malkhi, D., Reiter, M.: Secure and scalable replication in Phalanx. In: Proceedings 17th IEEE Symposium on Reliable Distributed Systems (SRDS’98), pp 51–58. IEEE Press (1998)

  18. Martin, J.-P.H., Alvisi, L.: A framework for dynamic Byzantine storage. In: Proceedings International Conference on Dependable Systems and Networks (DSN’04), pp 325–334. IEEE Press (2004)

  19. Misra, J.: Axioms for memory access in asynchronous hardware systems. ACM Trans. Programm. Lang. Syst. 8(1), 142–153 (1986)

    Article  MathSciNet  MATH  Google Scholar 

  20. Mostéfaoui, A., Raynal, M.: Intrusion-tolerant broadcast and agreement abstractions in the presence of Byzantine processes. IEEE Trans. Parallel Distrib. Syst. 27(4), 1085–1097 (2016)

    Article  Google Scholar 

  21. Pease, M., Shostak, R.R., Lamport, L.: Reaching agreement in the presence of faults. J. ACM 27, 228–234 (1980)

    Article  MathSciNet  MATH  Google Scholar 

  22. Raynal, M.: Communication and agreement abstractions for fault-tolerant asynchronous distributed systems, p 251. Morgan & Claypool Publishers (2010). (ISBN 978-1-60845-293-4)

  23. Raynal, M.: Concurrent programming: algorithms, principles and foundations, p 515. Springer (2013). (ISBN 978-3-642-32026-2)

  24. Raynal, M.: Distributed algorithms for message-passing systems, p 510. Springer (2013). (ISBN: 978-3-642-38122-5)

Download references

Acknowledgments

The authors want to thank the referees for their constructive comments, which helped improve the presentation of the paper.

This work has been partially supported by the French ANR project DISPLEXITY devoted to computability and complexity in distributed computing, the Franco-German ANR-DFG project DISCMAT (devoted to connections between mathematics and distributed computing), and the Franco-Hong Kong ANR-RGC Joint Research Programme 12-IS02-004-02 CO2Dim.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Michel Raynal.

Appendix A: Bracha’s Reliable Broadcast Algorithm

Appendix A: Bracha’s Reliable Broadcast Algorithm

The r-broadcast algorithm presented in Fig. 2 is Bracha’s algorithm [6] enriched with sequence numbers. Each process p i manages a local array n e x t i [1..n], where n e x t i [j] is the sequence number sn of the next application message (namely, app (−,s n)) from p j , that p i will process (line 3). Initially, for all i,j, n e x t i [j] = 1.

Fig. 2
figure 2

Reliable Broadcast in \({\mathcal {B}\mathcal {A}\mathcal {M}\mathcal {P}}_{n,t}[t<n/3]\), (code for process p i )

When a process p i invokes R_b r o a d c a s t app(v,s n), it broadcasts the message app (v,s n) (line 1) where sn is its next sequence number. On its “server” role, the behavior of a process p i is as follows.

  • When a process p i receives a message app (v,s n) from a process, it discards it if it has already received a message app (−,s n ) such that s n = s n. This is because, in this case p j is Byzantine (a correct process issues a single r-broadcast per sequence number). If p i has not previously received from p j a message app (−,s n ) such that s n = s n, it waits until it can process this message according to its sequence number (line 3). When this occurs, p i broadcasts the message echo (j,v,s n) to inform the other processes it received the application message app (v,s n) (line 3).

  • Then, when p i has received the same message echo (j,v,s n) from “enough” processes (where enough means that “more than (n + t)/2 different processes”), and has not yet broadcast a message ready (j,v,s n), it does it (lines 6-9).

    The aim of (a) the messages echo (j,v,s n), and (b) the cardinality “greater than (n + t)/2 processes”, is to ensure that no two correct processes can r-deliver distinct messages from p j (even if p j is Byzantine). The aim of the messages ready (j,v,s n) is related to the liveness of the algorithm. More precisely, its aim is to allow the r-delivery by the correct processes of the very same message app (v,s n) from p j , and this must always occur if p j is correct. It is nevertheless possible that a message r-broadcast by a Byzantine process p j may never be r-delivered by the correct processes.

  • Finally, when p i has received the message ready (j,v,s n) from (t+1) different processes, it broadcasts the same message ready (j,v,s n), if not yet done. This is required to ensure the RB-termination property. If p i has received “enough” messages ready (j,v,s n) (“enough” means here “from at least (2t+1) different processes”), it r-delivers the message app (v,s n) r-broadcast by p j .

More explanations and proofs that this algorithm satisfies the properties defining the reliable broadcast abstraction can be found in [6, 20].

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Mostéfaoui, A., Petrolia, M., Raynal, M. et al. Atomic Read/Write Memory in Signature-Free Byzantine Asynchronous Message-Passing Systems. Theory Comput Syst 60, 677–694 (2017). https://doi.org/10.1007/s00224-016-9699-8

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s00224-016-9699-8

Keywords

Navigation