100% found this document useful (3 votes)
67 views

Download ebooks file Introducing Blockchain with Lisp Implement and Extend Blockchains with the Racket Language Sitnikovski Boro all chapters

Racket

Uploaded by

yedikhouna74
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (3 votes)
67 views

Download ebooks file Introducing Blockchain with Lisp Implement and Extend Blockchains with the Racket Language Sitnikovski Boro all chapters

Racket

Uploaded by

yedikhouna74
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 62

Download the full version of the textbook now at textbookfull.

com

Introducing Blockchain with Lisp Implement


and Extend Blockchains with the Racket
Language Sitnikovski Boro

https://textbookfull.com/product/introducing-
blockchain-with-lisp-implement-and-extend-
blockchains-with-the-racket-language-sitnikovski-
boro/

Explore and download more textbook at https://textbookfull.com


Recommended digital products (PDF, EPUB, MOBI) that
you can download immediately if you are interested.

Introducing Blockchain with Lisp Implement and Extend


Blockchains with the Racket Language Sitnikovski Boro

https://textbookfull.com/product/introducing-blockchain-with-lisp-
implement-and-extend-blockchains-with-the-racket-language-sitnikovski-
boro-2/
textbookfull.com

Introducing Blockchain with Lisp Implement and Extend


Blockchains with the Racket Language Sitnikovski Boro

https://textbookfull.com/product/introducing-blockchain-with-lisp-
implement-and-extend-blockchains-with-the-racket-language-sitnikovski-
boro-3/
textbookfull.com

Introducing Blockchain with Lisp: Implement and Extend


Blockchains with the Racket Language 1st Edition Boro
Sitnikovski
https://textbookfull.com/product/introducing-blockchain-with-lisp-
implement-and-extend-blockchains-with-the-racket-language-1st-edition-
boro-sitnikovski/
textbookfull.com

Gender and Jim Crow women and the politics of white


supremacy in North Carolina 1896 1920 Second Edition ;
With A New Preface By The Author. Glenda Elizabeth Gilmore
https://textbookfull.com/product/gender-and-jim-crow-women-and-the-
politics-of-white-supremacy-in-north-carolina-1896-1920-second-
edition-with-a-new-preface-by-the-author-glenda-elizabeth-gilmore/
textbookfull.com
Introduction to Quantum Mechanics David J. Griffiths

https://textbookfull.com/product/introduction-to-quantum-mechanics-
david-j-griffiths/

textbookfull.com

An Introduction To Decision Theory Martin Peterson

https://textbookfull.com/product/an-introduction-to-decision-theory-
martin-peterson/

textbookfull.com

Deactivation of Heavy Oil Hydroprocessing Catalysts:


Fundamentals and Modeling Jorge Ancheyta

https://textbookfull.com/product/deactivation-of-heavy-oil-
hydroprocessing-catalysts-fundamentals-and-modeling-jorge-ancheyta/

textbookfull.com

The EU, Promoting Regional Integration, and Conflict


Resolution 1st Edition Thomas Diez

https://textbookfull.com/product/the-eu-promoting-regional-
integration-and-conflict-resolution-1st-edition-thomas-diez/

textbookfull.com

Mobile Crowd Sensing: Incentive Mechanism Design Fen Hou

https://textbookfull.com/product/mobile-crowd-sensing-incentive-
mechanism-design-fen-hou/

textbookfull.com
A Level Further Mathematics for OCR A Pure Core Student
Book 2 Year 2 AS A Level Further Mathematics OCR Vesna
Kadelburg
https://textbookfull.com/product/a-level-further-mathematics-for-ocr-
a-pure-core-student-book-2-year-2-as-a-level-further-mathematics-ocr-
vesna-kadelburg/
textbookfull.com
Introducing
Blockchain
with Lisp
Implement and Extend Blockchains
with the Racket Language

Boro Sitnikovski
Introducing
Blockchain with Lisp
Implement and Extend
Blockchains with
the Racket Language
Boro Sitnikovski
Introducing Blockchain with Lisp: Implement and Extend
Blockchains
with the Racket Language
Boro Sitnikovski
Skopje, North Macedonia
ISBN-13 (pbk): 978-1-4842-6968-8

ISBN-13 (electronic): 978-1-4842-6969-5


https://doi.org/10.1007/978-1-4842-6969-5
Copyright © 2021 by Boro Sitnikovski
This work is subject to copyright. All rights are reserved by the
Publisher, whether the whole or part of the material is concerned,
specifically the rights of translation, reprinting, reuse of illustrations,
recitation, broadcasting, reproduction on microfilms or in any other
physical way, and transmission or information storage and retrieval,
electronic adaptation, computer software, or by similar or dissimilar
methodology now known or hereafter developed.
Trademarked names, logos, and images may appear in this book.
Rather than use a trademark symbol with every occurrence of a
trademarked name, logo, or image we use the names, logos, and images
only in an editorial fashion and to the benefit of the trademark owner,
with no intention of infringement of the trademark.
The use in this publication of trade names, trademarks, service
marks, and similar terms, even if they are not identified as such, is not to
be taken as an expression of opinion as to whether or not they are
subject to proprietary rights.
While the advice and information in this book are believed to be true
and accurate at the date of publication, neither the authors nor the
editors nor the publisher can accept any legal responsibility for any errors
or omissions that may be made. The publisher makes no warranty,
express or implied, with respect to the material contained herein.
Managing Director, Apress Media LLC: Welmoed Spahr
Acquisitions Editor: Steve Anglin
Development Editor: Matthew Moodie
Coordinating Editor: Mark Powers
Cover designed by eStudioCalamar
Cover image by Michael Dziedzic on Unsplash (www.unsplash.com)
Distributed to the book trade worldwide by Apress Media, LLC, 1 New
York Plaza, New York, NY
10004, U.S.A. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail
[email protected], or visit www.springeronline.com. Apress
Media, LLC is a California LLC and the sole member (owner) is Springer
Science + Business Media Finance Inc (SSBM Finance Inc). SSBM Finance
Inc is a Delaware corporation.
For information on translations, please e-mail
[email protected]; for reprint, paperback, or audio
rights, please e-mail [email protected].
Apress titles may be purchased in bulk for academic, corporate, or
promotional use. eBook versions and licenses are also available for most
titles. For more information, reference our Print and eBook Bulk Sales web
page at http://www.apress.com/bulk-sales.
Any source code or other supplementary material referenced by the
author in this book is available to readers on GitHub via the book’s
product page, located at www.apress.com/9781484269688.
For more detailed information, please visit
http://www.apress.com/source- code.
Printed on acid-free paper
Table of Contents
About the Author
���������������������������������
���������������������������������
��������������vii
About the Technical Reviewer
���������������������������������
����������������������������ix
Preface
���������������������������������
���������������������������������
������������������������������xi
Chapter 1: Introduction to Blockchain
���������������������������������
�����������������1
1.1 Motivation and Basic Definitions
....................................................................2
1.2 Encryption
......................................................................................................8
1.2.1 Functions
...............................................................................................9
1.2.2 Symmetric-Key Algorithm
...................................................................10
1.2.3 Asymmetric-Key Algorithm
..................................................................11
1.3 Hashing
........................................................................................................14
1.4 Smart Contracts
...........................................................................................16
1.5 Bitcoin
..........................................................................................................1
6
1.6 Example Workflows
......................................................................................17
1.7
Summary...............................................................................................
.......18
Chapter 2: Racket Programming Language
���������������������������������
�������19
2.1 Introduction to Lisp
......................................................................................20
2.1.1 Data Structures and Recursion
............................................................21
2.1.2 Languages and Syntax
........................................................................24
2.2 Configuration and Installation
......................................................................28
iii
Table of ConTenTs
2.3 Introduction to Racket
..................................................................................30
2.3.1 Primitive Types
....................................................................................32
2.3.2 Lists, Evaluation, and Quotes
...............................................................33
2.3.3 Dotted Pairs
.........................................................................................36
2.3.4 Adding Definitions
...............................................................................38
2.3.5 Procedures and Functions
...................................................................40
2.3.6 Conditional Procedures
.......................................................................42
2.3.7 Recursive Procedures
..........................................................................46
2.3.8 Procedures That Return Procedures
....................................................50
2.3.9 General Higher-Order
Procedures........................................................51
2.3.10 Packages
...........................................................................................55
2.3.11 Scope
.................................................................................................57
2.3.12 Mutation
............................................................................................59
2.3.13 Structures
..........................................................................................61
2.3.14 Threads
..............................................................................................63
2.4 Creating an Executable
................................................................................65
2.5
Summary...............................................................................................
.......66
Chapter 3: Blockchain Implementation
���������������������������������
�������������69
3.1 The wallet.rkt File
........................................................................................71
3.2 The block.rkt
File..........................................................................................73
3.2.1 Construction
........................................................................................74
3.2.2 Hashing and Verification
......................................................................75
3.2.3 Hashcash
Algorithm.............................................................................77
3.3 The utils.rkt File
...........................................................................................80
3.4 Transactions
.................................................................................................82
3.4.1 The transaction-io.rkt File
...................................................................82
3.4.2 The transaction.rkt File
........................................................................85
iv
Table of ConTenTs
3.5 The blockchain.rkt File
.................................................................................91
3.5.1 Initialization
.........................................................................................91
3.5.2 Rewards
..............................................................................................92
3.5.3 Adding a Transaction
...........................................................................92
3.5.4 Verification
...........................................................................................95
3.6 Integrating Components
...............................................................................97
3.6.1 The main-helper.rkt File
......................................................................97
3.6.2 The main.rkt File
..................................................................................99
3.7
Summary...............................................................................................
.....103
Chapter 4: Extending the Blockchain
���������������������������������
��������������105
4.1 Smart Contracts Implementation
...............................................................106
4.1.1 The smart-contracts.rkt File
..............................................................106
4.1.2 Updating Existing Code
......................................................................112
4.2 Peer-to-Peer Implementation
.....................................................................114
4.2.1 The peer-to-peer.rkt File
....................................................................116
4.2.2 Updating Existing Code
......................................................................128
4.2.3 The main-p2p.rkt File
........................................................................128
4.3
Summary...............................................................................................
.....132
Conclusion
���������������������������������
���������������������������������
����������������������133
Further Readings
���������������������������������
���������������������������������
������������135
Appendix A: Macros
���������������������������������
���������������������������������
��������137
Hygienic Macros
...............................................................................................139
Index
���������������������������������
���������������������������������
�������������������������������143
v
About the Author
Boro Sitnikovski has over 10 years of experience working
professionally as a software engineer. He started programming using the
Assembly programming language on an Intel x86 at the age of 10. While
in high school, he won several prizes for competitive programming,
varying from fourth, third, and first place.
He is an informatics graduate; his Bachelor’s thesis was titled
“Programming in Haskell Using Algebraic Data Structures,” and his
Master’s thesis was titled “Formal Verification of Instruction Sets in Virtual
Machines.” He has also published papers on software verification. Other
research interests include programming languages, mathematics, logic,
algorithms, and writing correct software.
He is a strong believer in the open-source philosophy and contributes
to various open-source projects.
In his spare time, he enjoys time with his family.
vii
About the Technical Reviewer
Spiro Buzharovski is a mechanical engineer. For the last several
years, he has worked as a full-stack software developer in the IT sector.
Prior experience includes more than six years of mechanical engineering
work in the oil and gas sector. His interests include Java frameworks,
blockchains, and the latest high-tech trends.
ix
Preface
This book aims to be accessible to novices who have some basic
working experience with computers, and at least some experience with
programming. Knowing how to program is not a strict necessity, although
it may help in grasping some concepts. The book also assumes some
experience with high school mathematics, such as functions.
One of the reasons for writing this book is that I could not find a
single book that explained how to implement blockchain from scratch,
covering all the details. I had to do a lot of research on the Internet to
come up with a complete picture of what blockchain is, how one can
implement it, and what it is good for.
Since it’s easy to get sidetracked by the amount of information, every
chapter contains a summary to serve as recall. Moving back and forth
between chapters until information sticks can be useful in aiding
understanding.
The recommended approach to the book is to follow along and write
the code as it’s being explained instead of reading passively. This way you
will get the most of it. All of the source code is available for download
from
https://github.com/bor0/racket- coin.
You can access my blog at https://bor0.wordpress.com and check out
some of my latest work. Feel free to contact me at
[email protected] for any questions you might have, and I will do
my best to answer.
Thanks to my family, coworkers, and friends for all the support they
give to me.
Finally, thank you for purchasing this book! I hope that you will learn
new techniques in reading this book and that it will spark more interest in
Lisp and blockchain.
xi
CHAPTER 1
Introduction to
Blockchain

The blockchain bazaar, by D. Bozhinovski


© Boro Sitnikovski 2021
1
B. Sitnikovski, Introducing Blockchain with Lisp,
https://doi.org/10.1007/978-1-4842-6969-5_1
Chapter 1 IntroduCtIon to BloCkChaIn
Visit https://textbookfull.com
now to explore a rich
collection of eBooks, textbook
and enjoy exciting offers!
This chapter introduces some important blockchain definitions and
examples. We will see what properties a blockchain has, what it allows us
to do, and what it is good for.
Definition 1-1
Blockchain is a system in which a record of transactions is
maintained across several computers that are linked in a
peer-to-peer network.1
We will give an example that will serve as a motivation, as well as
define what encryption and hashing techniques are and how can they
help us with our system.
Note that we will hand-wave some of the technical bits in this
chapter, as it serves as introductory material. The technical bits will be
uncovered later when we start building the blockchain.
1.1 Motivation and Basic Definitions
Let’s assume that you and your friends exchange money often, for
example, when paying for dinner or drinks. It can be inconvenient to
exchange cash all the time.
One possible solution is to keep records of all the bills that you and
your friends have. This is called a ledger and is depicted in Figure 1-1.
1 We will use this definition of blockchain throughout the book, but
note that there are many different definitions on the Internet. By the end
of this book, you should be able to distinguish the slight nuances and
similarities in each definition of blockchain.
2

Chapter 1 IntroduCtIon to BloCkChaIn


Figure 1-1. A ledger and a set of connected friends (peers)
Definition 1-2
a ledger is a book that contains a record of transactions.
Further, at the end of every day, you all sit together and refer to the
ledger to do the calculations to settle up. Let’s imagine that there is a pot,
which is the place where all of the money is kept. If you spent more than
you received, you put money into the pot; otherwise, you take money
out.
We want to design a system that functions similarly to a regular bank
account. A holder of a wallet (the bank account) should only be able to
send money from their wallet to other wallets. Thus, every person in the
system will have a wallet of a kind, which can also be used to determine
their balance. Note that with the current setup using a ledger, we have to
go through all existing records to determine the balance of a specific
wallet.
If we want to avoid going through all existing records, there is a way
we can optimize this, using unspent transaction outputs (UTXOs), as we
will see in Section 3.5.
A problem that may arise is the so-called double-spending problem,
where Bob can try to send all of his money to Alice and you at the same
time. This would effectively double the money he sends in relation to
what 3

Chapter 1 IntroduCtIon to BloCkChaIn


he has. There are several ways this can be resolved, and the solution
that we will provide will be a simple check of the sum of the inputs and
the sum of the outputs (UTXO).
Another problem that might appear with this kind of system is that
anyone can add a transaction. For example, Bob can add a transaction in
which Alice pays him a few dollars without Alice’s approval. We need to
rethink our system so that each transaction will be verified/signed.
Definition 1-3
a digital signature is a way to verify the authenticity of digital
messages and documents.
To sign and verify transactions, we will rely on digital signatures
(Figure 1-2). For now, let’s assume that anyone who adds information to
the ledger also adds a signature with each record, and others have no
way to modify the signature, but can only verify it. We will cover the
technical details in Section 1.2.
Figure 1-2. Our ledger now contains signatures Now let’s assume
that Bob is keeping the ledger to himself, and everybody agrees to this.
The ledger is now stored in what is called a centralized place. If Bob is
unavailable at the end of the day when everybody gathers to settle up,
nobody will be able to refer to the ledger.
4
Chapter 1 IntroduCtIon to BloCkChaIn
We need to find a way to decentralize the ledger, so that at any given
time, anyone can make a transaction. For this, every person involved will
keep a copy of the ledger to themselves, and when they meet at the end
of the day, they will sync their ledgers.
You are connected to your friends, and so are they to you. Informally,
this makes it a peer-to-peer network.
Definition 1-4
a peer-to-peer network is formed when two or more computers
are connected to each other.
For example, when you are accessing a web page on the Internet
using a browser, your browser is the “client” and the web page you’re
accessing is hosted by a “server.” This represents a centralized system
since every user is getting the information from a single place—the
“server.”
In contrast, in a peer-to-peer network—which represents a
decentralized system—the distinction between a “client” and a “server” is
blurred. Every peer is both a “client” and a “server” at the same time.
5
Chapter 1 IntroduCtIon to BloCkChaIn
Figure 1-3. A decentralized ledger
With a decentralized system (see Figure 1-3), as the list of peers
(persons) grows, we might run into a problem of trust. When everybody
meets at the end of the day to sync their ledgers, how can they believe
that the transactions listed in other people’s ledgers are true? Even if
everybody trusts everybody else’s ledger, what if a new person wants to
join this network? It’s natural for existing users to ask this newcomer to
prove that they can be trusted. We need to modify our system to support
this kind of trust. One way to achieve that is through a proof of work,
which we introduce next.
6
Chapter 1 IntroduCtIon to BloCkChaIn
Definition 1-5
a proof of work is data that is time-consuming to calculate, and
easy for others to verify.
For each record we will also include a special number (or a hash) that
will represent proof of work, in that it will provide proof that the
transaction is valid. We will cover the technical details in Section 1.3.
At the end of the day, we agree that we will trust the ledger of the
person who has put most of the work in it. If Bob has some errands to
run, he can catch up the next day by trusting the rest of the peers in the
network.
In addition to all this, we want the transactions to have an order, so
every record will also contain a link to the previous record. This
represents the actual blockchain, as depicted in Figure 1-4.
Figure 1-4. A chain of blocks, aptly called a blockchain If everybody
agreed to use this ledger as a source of truth, there would be no need to
exchange physical money at all. Everybody can just use the ledger to put
money in or retrieve it.
7
Chapter 1 IntroduCtIon to BloCkChaIn
To understand the technical bits of digital signatures and proof of
work, we will be looking at encryption and hashing, respectively.
Fortunately for us, the programming language that we will be using
has built-in functionalities for encryption and hashing. We don’t have to
dig too deep into how hashing and encryption and decryption work,
because a basic understanding will be sufficient.
Observe how we started with a simple definition of a ledger and
gradually built up to a complex system. We will use the same approach in
programming.
1.2 Encryption
We will start by defining encryption and decryption.
Definition 1-6
Encryption is a method of encoding values so that only authorized
persons can view the original content. Decryption is a method of
decoding encrypted values.
Note that in this section we will mostly talk about numbers, but
characters and letters can also be encrypted/decrypted using the same
methods, by using the ASCII2 values for the characters.
Before we talk about encryption, we first have to recall what
functions are, since encoding/decoding values is achieved by using
functions.
2 The ASCII table is a table that assigns a unique number to each
character (such as
!, @, a, Z, etc.).
8

Chapter 1 IntroduCtIon to BloCkChaIn


1.2.1 Functions
Figure 1-5 shows a visual representation of a function. An input goes
in the function and an output is produced.
Figure 1-5. A function
Definition 1-7
Functions are mathematical entities that assign unique outputs to
given inputs.
For example, you might have a function that accepts as input a
person and then returns the person’s age or name as the output. Another
example is the function f(x) = x + 1. There are many inputs this function
can accept: 1, 2, and 3.14. For example, when we input 2 it gives us an
output of 3, since f(2) = 2 + 1 = 3.
One simple way to think of functions is in the form of tables. For a
function f(x) accepting a single argument x, we have a two-column table
where the first column is the input and the second column is the output.
For a function f(x, y) that’s accepting two arguments x and y, we
have 9
Chapter 1 IntroduCtIon to BloCkChaIn
a three-column table where the first and second columns represent
the input, and the third column is the output. Thus, to display the function
discussed above in the form of a table, it would look like this: x
f ( x)
1
2
2
3


1.2.2 Symmetric-Key Algorithm
We can assume that there exist functions E( x) and D( x) for
encryption and decryption, respectively. We want these functions to have
the following properties:
• E( x) ≠ x, meaning that the encrypted value should not be the
same as the original value.
• E( x) ≠ D( x), meaning that the encryption and decryption functions
produce different values.
• D( E( x)) = x, meaning that the decryption of an encrypted value
should return the original value.
For example, let’s assume there’s some kind of an encryption
scheme, say E(“Boro”) = 426f726f. We can “safely” communicate the
value 426f726f without actually exposing our original value, and only
those who know the decryption scheme D(x) will be able to see that
D(426f726f) = “Boro”.
Another example of an encryption scheme is for E( x) to shift every
character in x forward, and for D( x) to shift every character in x
backward.
This scheme is known as the Caesar cipher. To encrypt the text “abc”
we have E(“abc”) = “bcd”, and to decrypt it, we have D(“bcd”) = “abc”.
10

Chapter 1 IntroduCtIon to BloCkChaIn


However, this scheme makes a symmetric algorithm, as shown in
Figure 1-6, meaning that we have to share the functions E and D with the
parties involved. That makes it open to attacks.
Figure 1-6. Symmetric-key algorithm
1.2.3 Asymmetric-Key Algorithm
To solve the problems that arise with symmetric-key algorithms, we
will use what is called an asymmetric algorithm or public-key
cryptography (Figure 1-7). In this scheme, we have two kinds of keys:
public and private.
We share the public key with the world and keep the private one to
ourselves.
This algorithm scheme has a neat property in which only the private
key can decode a message, and only the public key can encode a
message.
We have two functions that should have the same properties as those
for the symmetric-key algorithm:
• E( x, p) encrypts a message x given a public key p
• D( x′, s) decrypts an encrypted message x′ given a private (secret)
key s
11

Chapter 1 IntroduCtIon to BloCkChaIn


Figure 1-7. Asymmetric-key algorithm
In our example, we will rely on the modulo operation. Recall, from
high school, that a mod b represents the remainder when a is divided by
b.
For example, 4 mod 2 = 0 because there is no remainder when
dividing 4
by 2, however, 5 mod 2 = 1.
Here’s one example of a basic encryption algorithm based on addition
and modulo operations:
1. Pick one random number, for example 100. This will
represent a common, publicly available key.
2. Pick another random number in the range (1, 100),
for example, 97. This will represent the private key s.
3. The public key p is obtained by subtracting the common key from
the private one: 100 − 97 = 3.
4. To encrypt data, add it to the public key and the take modulo 100.
E( x, p) = ( x + p) mod 100.
5. To decrypt data, we use the same logic but with our
private key, so D( x′, s) = ( x′ + s) mod 100.
For example, suppose we want to encrypt 5. Then E(5, 3) = (5 + 3)
mod 100 = 8. To decrypt 8, we have D(8, 97) = (8 + 97) mod 100 = 105
mod 100 = 5.
This example uses a very simple generation pair: ( x + y) mod c. But,
in practice, the pair-generation algorithm is much more complex and
harder for attackers to break. After all, the complexity of the algorithm’s
computation is what makes it hard to break.
12
Chapter 1 IntroduCtIon to BloCkChaIn
We can use a similar algorithm for digital signatures:
• S( x, s) signs a message x given a private key s (encryption).
• V( x′, sig, p) verifies a signed message x′, given signature sig and
public key p (decryption).
As we said earlier, each record will also include a special number (or
a hash). This hash will be what is produced by S( x, s) (encryption), and it
can be verified by using the verify function to confirm a record’s
ownership (decryption).
The wallet will contain a pair of public and private keys. These keys
will be used to receive or send money. With the private key, it is possible
to write new blocks (or transactions) to the blockchain, effectively
spending money. With the public key, others can use it to send money to
the wallet and verify signatures.
Exercise 1-1
Come up with a table of functions such that:
1. the input is a number and the output is a number.
2. the input is a number and the output is the name of an employee
in a company given that number.
Exercise 1-2
Check the three properties for a symmetric-key algorithm to ensure
that the Caesar cipher is compatible with them.
Exercise 1-3
Come up with an encryption scheme, based on mathematical
substitution.
13
Chapter 1 IntroduCtIon to BloCkChaIn
Exercise 1-4
use the asymmetric-key algorithm we defined to sign a message and
verify it.
Hint: this is similar to the encryption/decryption example that we
showed.
1.3 Hashing
Definition 1-8
Hashing is a one-way function in that it encodes text without a way
to retrieve the original value.
Hashing is simpler than the previously described encryption schemes.
One example of a hashing function is to return the length of
characters -
H(“abc”) = 3, but also H(“bcd”) = 3. This means that we don’t have a
way to retrieve the original value other than by using the return value 3.
As we mentioned earlier, the reason to use such a technique is that it
has some interesting properties, such as providing us with proof of work.
Definition 1-9
Mining is the process of validating transactions. For this effort,
successful miners obtain money as a reward.
14
Chapter 1 IntroduCtIon to BloCkChaIn
Hashcash is one kind of a proof of work system.3 We will use it to
implement mining. We will see how this algorithm works in detail in the
Visit https://textbookfull.com
now to explore a rich
collection of eBooks, textbook
and enjoy exciting offers!
later chapters, when we implement it.
Hashing functions have another useful property that allows us to
connect two or more distinct blocks by having the information about the
current block’s hash (current-hash) and the previous block’s hash
(previous-hash) in each block. For example, block-1 may have a hash
such as 123456 and block-2 may have a hash such as 345678. Now,
block-2’s previous-hash will be block-1’s current-hash, that is, 123456.
Here, we linked these two blocks, effectively creating a linked list of
blocks containing ledgers with transactions. This linking is depicted in
Figure 1-4.
The hash of the block is based on the block’s data itself, so to verify a
hash, we can just hash the block’s data and compare it to current-hash.
Two or more blocks (or transactions) that are connected form a
blockchain. The validity of the blockchain will depend on the validity of
each transaction.
Exercise 1-5
Come up with your own hashing function.
Exercise 1-6
how can the linked list depicted in Figure 1-4 be traversed? What are
the implications of this property?
3 Hashcash was initially targeted for limiting email spam and other
attacks.
However, recently it’s also become known for its use in blockchains as
part of the mining process. Hashcash was proposed in 1997 by Adam
Backa.
15
Chapter 1 IntroduCtIon to BloCkChaIn
1.4 Smart Contracts
Definition 1-10
a smart contract is a self-executing contract in which the conditions
of an agreement between a buyer and a seller are directly expressed by
lines of code.
A blockchain is programmable if the transaction conditions
themselves can be programmed by users. For example, users (not
necessarily programmers) can write a script to add requirements that
must be satisfied before sending money. It could look something like this:
1 if (user has more than 10 money)
2 then approve transaction
3 else reject transaction
Smart contracts are implemented as a computation that takes place
on the blockchain. We will implement a very basic functionality of smart
contracts in the later chapters.
1.5 Bitcoin
Bitcoin was the world’s first implementation of a blockchain. In
November 2008, a paper authored by Satoshi Nakamoto, entitled “Bitcoin:
A Peer-to-Peer Electronic Cash System,” was published on a cryptography
mailing list. Bitcoin’s whitepaper is nine pages, however, it is a mostly
theoretical explanation of the design, and as such may be a bit
overwhelming to newcomers.
16
Chapter 1 IntroduCtIon to BloCkChaIn
The Bitcoin software is open-source code and was released in
January 2009 on SourceForge. The design of a Bitcoin includes a
decentralized network (peer-to-peer network), block (mining), blockchain,
transactions, and wallets, each of which we will look at in detail in this
book.
Although there are many blockchain models and each differs in
implementation details, the blockchain we will be building upon in this
book will look pretty similar to Bitcoin, with some parts simplified.
1.6 Example Workflows
We will list a few important workflows that our system will use,
among others.
Mining a block creates a new block, using Hashcash to calculate the
current-hash of the block. It also contains previous-hash, which is a link
to the previous block in the blockchain.
Checking a wallet balance for person A will first filter all blocks in the
blockchain (sender = A or receiver = A) and then sum them to calculate
the balance. The more our blockchain grows, the longer this operation will
take. For that purpose, we will use the unspent transaction outputs
(UTXO) model. This model is a list of transactions containing information
about the owner and the amount of money. Thus, every transaction will
consume elements from this list.
Adding a block to a blockchain consists of sending money from A to
B.
One prerequisite is that A has enough money. We check this using
the wallet balance workflow. We proceed by creating a transaction
(sender = A, receiver = B) and signing it. Then we mine a block using this
transaction and update the UTXO with the rewards.
17
Chapter 1 IntroduCtIon to BloCkChaIn
1.7 Summary
The point of this chapter is to provide a vague idea of how the
system that we will implement looks. Things will become much clearer in
the implementation chapter (Chapter 3), where we have to be explicit
about the definitions of every component.
Here’s briefly what we learned in this chapter:
• The core component of the system is a block.
• A block contains (among other data) transactions.
• We have a ledger that is an ordered list of all valid
blocks (a blockchain).
• Every peer involved with the ledger has a wallet.
• Every record in the ledger is signed by the owner and
can be verified by the public (digital signatures).
• The ledger is in a decentralized location, that is,
everybody has a copy of it.
• Trust is based on proof of work (mining).
18
CHAPTER 2
Racket Programming
Language

Structure, by D. Bozhinovski
© Boro Sitnikovski 2021
19
B. Sitnikovski, Introducing Blockchain with Lisp,
https://doi.org/10.1007/978-1-4842-6969-5_2
Chapter 2 raCket programming Language
Now that we have vaguely explained what a blockchain is and how it
is useful, the next obvious step is to implement these calculations in a
computer, so that they are automatically performed. In this chapter, we
introduce a tool that will allow us to implement these calculations exactly.
2.1 Introduction to Lisp
Lisp, originating from 1958, stands for LIST Processing and is a family
of programming languages. Unlike standard programming languages, it
has a fully parenthesized prefix notation. For example, instead of writing 1
+ 2, one would write (+ 1 2).
There are many Lisp implementations in the Lisp family. One such
implementation is Racket, and we will use it in this book since this
implementation is particularly easy for entry-level programmers. The
language is used in a variety of contexts such as research, computer
science education, and general-purpose programming. It has also been
used for commercial projects. One notable example is the Hacker News1
website, which runs on Arc, a programming language developed in
Racket.
Lisp implementations are quite known for their minimalism. Due to
this minimalism, building a blockchain (or anything, for that matter) in
Lisp will imply that you can do the same in most other programming
languages with ease. Lisps favor function composition—chaining two
functions together—for example, given f( x) and g( x), one composition is
f( g( x)). Further in the book, we will see the interesting properties that
composition offers and how easily we can maintain and extend our code.
1 https://news.ycombinator.com/
20
Chapter 2 raCket programming Language
2.1.1 Data Structures and Recursion
There are three important notions in a Lisp:
• Primitives or axioms (starting points or building blocks). As an
example, the numbers 1, 2, and so on,
are something we do not have to implement ourselves
since they are already included in the programming
language. Another example is operations on numbers,
such as + and *.
• Composition or a way to compose primitives to do complex
calculations. For example, we can combine
+ and * as follows: 1 + (2 * 3) or in prefix (Lisp)
notation: (+ 1 (* 2 3)).
• Abstraction or capturing the composition of primitives.
For example, if we find ourselves doing a calculation
over and over again, it would be good to capture
(abstract, or wrap) it in a function that can be easily
reused.
We will rely on these concepts repeatedly throughout the book, as
they allow us to build complex structures.
Definition 2-1
Random documents with unrelated
content Scribd suggests to you:
suotuisa, kävi matkamme nopeasti, ja aamun ensi valon sarastaissa
näimme kylän olevan noin peninkulman päässä. Sinne emme
kumminkaan uskaltaneet nousta, sillä meidät olisi tunnettu; siksi
ohjasimme veneemme muutamien kääpiömäisten vesipalmujen
suojaan, noin puolen englannin peninkulman päähän kylästä ja
läksimme, kätkettyämme veneen miten taisimme, viivyttelemättä
vuoristoa kohti.

Kiertäen kylän takaa, jottei juuri heräävä väki huomaisi meitä,


aloimme kamalan matkamme. Jonkun aikaa jaksoi Maya hyvin,
mutta kun päivän helle lisääntyi, alkoi hän näyttää väsymyksen
oireita, mikä ei ollut ihmekään, sillä hän kantoi sylissään kolmen
viikon vanhaa lastaan. Keskipäivällä pysähdyimme, jotta hän saisi
levätä, piiloutuen puron rannalla kasvavan puun suojaan ja syöden
mukaan ottamiamme eväitä. Iltapäivällä jatkoimme matkaamme ja
laahustimme lopun päivää eteenpäin, miten parhaiten taisimme,
englantilaisen ja minun kantaessa vuorotellen pikku poikaa, kaiken
muun taakkamme lisäksi.

Vihdoin joutui ilta ja me laitoimme yöleirimme, jos leiriksi voi


kutsua sitä, että nukkuu setripuun alla ilman tulta, mukana vain
vähän ruokaa ja peitteinä vain vaipat. Aamuyöstä ilma yhä kylmeni,
sillä olimme jo koko lailla yläpuolella järven pintaa, ja pienokainen
alkoi itkeä surkeasti — tuo itku vallan viilsi sydäntämme. Nousimme
kumminkin auringon noustessa, ja jatkoimme matkaamme, sillä
näimme sen olevan ainoan keinon. Koko päivän vaelsimme, yhä
uupuvin askelin, kunnes auringon laskiessa pääsimme lumirajalle ja
näimme edessämme metsästäjäin majatuvan, missä olimme
yöpyneet, saapuessamme Sydämen Maahan.
"Menkäämme sisään", sanoi Maya, "hakemaan ruokaa sekä suojaa
yöksi."

Aikomuksemme oli ollut välttää tätä tupaa ja mennä vuorensolaan,


missä ajattelimme viipyvämme aamunkoittoon asti ja sitten jatkaa
matkaa yli vuoren rinteen erämaahan.

"Jos menemme sinne, Maya, siepataan meidät kiinni", sanoi


englantilainen; "ainoa turvamme on kulkea solan läpi ennenkuin
meidät tavoitetaan, sillä maan lait kieltävät kenenkään seuraamasta
meitä erämaahan."

"Ellemme mene sisään, kuolee lapseni kylmyyteen", Maya vastasi.


"Olitte liian helläsydäminen, kun ette surmannut tuota
murhanyrityksissä kulkevaa naista, mikä olisi ollut ainoa
pelastuksemme; onko Teillä nyt, mieheni, sydäntä tappaa oma
lapsemme?"

Englantilaisen silmiin herahtivat kyyneleet ja hän sanoi:

"Tapahtukoon Teidän tahtonne."

Siitä huolimatta oivalsimme — kaikki kolme — että jos tahdoimme


pelastua, meidän täytyi antaa lapsen kuolla, mutta niin
välttämätöntä kuin matkamme jatkaminen olikin, emme voineet sitä
tehdä.

Näin ollen me poikkesimme tupaan, ja tulen ääressä istui taaskin


sama mies, vaimoineen, jotka olimme siellä tavanneet vuosi sitten.

"Keitä te olette?" hän huusi hypähtäen ylös. "Anteeksi, rouva,


mutta en ole tuntea Teitä tuossa viitassa."
"On parasta, ettette tunnekaan meitä", sanoi Maya.

"Olemme eksyksissä vaeltavia metsästäjiä. Antakaahan ruokaa


meille, niinkuin velvollisuutenne vaatii."

Mies ja vaimo, jotka olivat ystävällistä väkeä, tottelivat meitä ja


panivat pöytään parasta mitä heillä oli. Söimme ja laskeuduimme
sitten levolle, sillä olimme lopen väsyneitä, pyytäen miestä pitämään
varalla ja ilmoittamiaan meille, jos näkisi jonkun vieraan lähestyvän
taloa. Ennen päivänkoittoa hän herätti meidät, ja me nousimme ylös.
Vähän myöhemmin tuli hän huoneeseeni ilmoittamaan, että suuri
miesjoukko näkyi lähestyvän tupaa. Tiesin lopun tulleen ja kutsuin
kokoon toiset.

"Meillä on nyt kolme vaihtoehtoa", minä sanoin — "paeta


vuorensolaan, puolustautua tässä tuvassa, tai antautua."

"Ei ole aikaa paeta", vastasi englantilainen, "ehdotukseni on että


taistelemme."

"Luuletteko, että kaksi jousilla aseistettua miestä" — sillä


tuliaseemme oli otettu pois pyramiidin huipulla, emmekä saaneet
niitä enään käsiimme — "riittäisi viidellekymmenelle. No, ystävä,
voimme yrittää, jos Teitä haluttaa, ja ehkä niin on yhtä hyvä kuolla
kuin jollain muullakin tavalla."

"Se on mieletöntä", virkkoi Maya; "on vain yksi keino: antautua


kohtalon käsiin, jos se voisi mitenkään auttaa. Olisin toivonut
valinneemme sen keinon, ennenkuin läksimmekään tälle vaivalloiselle
matkalle."
Nousevan auringon valossa näimme suuren miesjoukon
piirittäneen tuvan.
Joukossa oli ylimyksiäkin, ja minä tunsin Dimasin ja Tikalin.

"Olkaamme uljaita", sanoi Maya. Niin me avasimme oven ja


astuimme ulos
Tikalin, Dimasin ja muiden ylimysten eteen.

"Ketä etsitte, kun saavutte oikein asejoukoin?" kysyi Maya.

"Ketä muuta kuin Teitä itseänne minä etsisin, serkku?" vastasi


Tikal — ja villi tuli leimahti hänen silmissään. "Vaimoni Nahua olisi
kyllä puolestaan antanut Teidän mennä viimeisen kerran, mutta
hänen tahtonsa ei ole minun tahtoni eikä hänen halunsa minun
haluni, ja mepä olemme yllättäneetkin teidät oikeaan aikaan."

Maya käänsi halveksivin ilmein katseensa hänestä ja kääntyi


Dimasin puoleen sanoen:

"Sanokaa, mitä olemme tehneet, koska seuraatte meitä kuin


mitäkin pahantekijöitä?"

"Armollinen rouva", vastasi vakavasti vanha pappi, "näyttää siltä,


kuin hyvinkin ansaitsisitte tuon nimen, Te ja toverinne. Kuulkaahan:
kaksi päivää sitten olitte te kateissa, ja armollinen rouva Nahua
niinikään. Etsittiin ja etsittiin ja avattiin vihdoin yksityisen asuntonne
ovet, ja sieltä löydettiin Nahua köytettynä. Häneltä saimme kuulla
paenneenne ja läksimme teitä ajamaan takaa."

"Ilmoittiko hän teille sitten, miksi me pakenimme?" kysyi Maya.


"Kertoiko hän teille sitä, että hän hiipi yöllä varkaan tavoin
huoneeseeni ja oli juuri murhaamaisillaan lapseni?"
"Ei, armollinen rouva, ei hän kertonut meille lainkaan sitä. Hänen
käytöksensä oli tosiaankin kummallinen; sillä toinnuttuaan hieman
hän peruutti sanansa ja väitti, ettei hän tiedä mitään teistä ja teidän
aikeistanne, ja että olisi, vaikka olisittekin paenneet, parempi antaa
teidän mennä, ennenkuin ehtisi tapahtumaan ikävämpiä asioita.
Ymmärtäen helposti hänen syynsä me kumminkin lähdimme
ajamaan teitä takaa ja löysimmekin teidät, ja nyt me viemme teidät
Neuvoston eteen vastaamaan suurista synneistänne, koska olette
rikkoneet juhlallisen valanne ja yrittäneet lähteä maasta ilman
Neuvoston lupaa sekä lisänneet rikoksenne suuruutta ottamalla
mukaan tämän lapsenne, Taivassyntyisen pelastajan, johon
heimomme kohdistaa kaikki toiveensa."

"Jos olemmekin rikkoneet valamme", sanoi Maya, "rikoimme ne


pelastaaksemme henkemme. Pitikö meidän jäädä kaupunkiin,
kunnes roistojen puukko olisi ehtinyt tehdä tehtävänsä? Hääiltanani
juuri hyökkäsi murhamies mieheni kimppuun, ja ehkä tuossa on
eräs" ja hän osoitti Tikalia — "joka voisi ilmoittaa meille, kuka tuo
murhaaja oli ja mistä hän tuli. Kolme päivää sitten uhkasi toinen
murhamies lapsemme henkeä, ja se oli taas Lordi Tikalin vaimo.
Onko silloin synti että yritimme viedä maasta pois sen, jonka henki ei
ollut turvassa siellä?"

"Kaikki nämä seikat voitte esittää Neuvostolle, rouva", vastasi


Dimas, "ja jos väitteenne Nahuasta on totta, saa hän epäilemättä
rangaistuksen rikoksestaan. Mutta hänen rikoksensa ei sittenkään ole
niin suuri kuin Teidän, sillä huomatessanne henkenne olevan
vaarassa olisi Teidän pitänyt kääntyä niiden puoleen, jotka voivat
antaa apua Teille, sen sijaan että läksitte pakoon varkaiden lailla.
Nouskaahan kantotuoliin, joka on otettu Teitä varten, niin lähdemme
matkaan."
"Niinkuin tahdotte", Maya sanoi; "mutta yhtä pyydän Teiltä: viekää
pois näkyvistäni tuo mies, serkkuni Tikal, sillä minä vihaan nähdä
häntä, koskei hän tyydy vain suunnittelemaan mieheni ja lapseni
murhaa, vaan häpäisee minua yhtämittaa, rakkauttaan
tyrkyttämällä."

"Tapahtukoon tahtonne, armollinen rouva. Miehenne ja ystävänne


voivat käydä vieressänne, ja kantotuolianne ympäröivät asemiehet
pitävät varalla, ettei Teille tapahdu mitään pahaa."

Sitten me läksimme. Paluumatkastamme ei ole muuta sanottavaa,


kuin että se oli vieläkin raskaampi kuin tulomatkamme. Sillä vaikka
olimmekin uupuneita, nälkäisiä, pelon ahdistamia, paistoi silloin
kumminkin vapaus meille johtotähtenä, jota vastoin nyt, vaikka
kuljimme mukavasti, tunsimme häpeän, pilkan ja kuoleman
odottavan meitä.

Minua puolestani ei tämä ajatus suuria surettanut, sillä olin jo


heittänyt kaiken toivon enkä välittänyt elää toivotonta elämää. Teitä,
ystäväni, jolle kirjoitan tätä kertomusta, ihmetyttää tämä, mutta jos
tuona päivänä olisitte ollut minun asemassani, ette ollenkaan
kummastelisi. Vielä nytkin olen joskus unessa joutuvinani Sydämen
Kaupunkiin, ja herään kammottavasta unestani kuin painajaisen
kynsistä. Totta kyllä, minulla oli siellä valtaa ja ylellisyyttä, mutta ah!
mieluummin olisin hankkinut elatukseni paimentamalla karjaa
erämaassa kuin kuluttanut elämääni tuossa kultaisessa häkissä.

Mitä merkitsivät minulle heidän juhlansa ja tyhjät ilonsa ja heidän


vallan- ja arvontavoittelunsa — minulle, joka koko elämäni olin
seurannut korkeiden toiveitteni tähteä, tuota tähteä, joka nyt oli
sammumaisillaan? Mayalla ja englantilaisella oli lohtuna lapsensa;
mutta minulla ei ollut muuta kuin heidän ystävyytensä liikenevät
tähteet, monen epäonneni muisto, omantunnon ainainen kirvely,
koston pelko ja kaiken lopuksi viimeisen rauhan toivo. Murtunut ja
epätoivon murjoma kun olin, valmistauduin tyynesti kohta koittavaa
kuolemaa varten, mutta miten olisi noiden laita, jotka vielä uhkuivat
rakkautta ja nuoruutta?

Myöhään illalla pääsimme kaupunkiin ja meidät vietiin, ei


asuntoomme palatsiin, vaan pyramiidille päin.

"Mitä nyt?" kysyi Maya joukon johtajalta. "Tuonnehan meidän on


mentävä."

"Ei, armollinen rouva", hän vastasi; "olen käskenyt viedä teidät


pyramiidin portaita ylös."

Silloin painoi Maya kasvonsa lapsen kasvoihin ja nyyhkytti, sillä


hän aavisti että taaskin joutuisimme tuonne synkkään holviin, missä
hänen isänsä oli kuollut. He veivät meidät portaita ylös ja taas
ahtaita käytäviä alas, kunnes pääsimme lampuin valaistuun holviin ja
kuulimme kupariovien pamahtavan kiinni takanamme. Sitten saimme
ruokaa ja jäimme yksiksemme.

En koskaan ole viettänyt levottomampaa yötä; sillä vaikka miten


yritin, oli minun mahdotonta saada unta silmiini, ja minä kääntyelin
vuoteellani mietiskellen missä huomenna uinuisin, kun olisimme
olleet Kaikkein Pyhimmän neuvoston edessä ja Nahua olisi todistanut
meitä vastaan. Muistin tuon kuilun alttarin edessä ja olin kuulevinani
veden loiskeen sen syvyyksistä! No, kuten sanoin, en pelännyt
kuolemaa, sillä Jumala armahtaa syntisiä; mutta voi! oli sittenkin
hirveää kuolla valehtelijana ja muistaa, että minä juuri olin tuonut
englantilaisen tänne samaan kohtaloon.
Aprikoidessani siinä, kuulin läpi paksujen holviovien naisen huutoa
ja syöksyin ylös vuoteestani, kiirehtien keskisaliin, missä lamput
paloivat yhtämittaa. Siellä näin Mayan juoksevan ympäri salia
yöpuvussaan, silmät kauhua kuvastaen.

"Mitä on tapahtunut?" kysyin, pysäyttäen hänet; samassa tuli


siihen englantilainenkin.

"Oi, minä olen nähnyt unta!" hän läähätti. "Olen nähnyt kamalaa
unta.
Näin isäni saapuvan luokseni ja — en osaa sanoa — lapsi — lapsi
—".
Ja hän keskeytti eikä osannut sanoa sen enempää.

"Tämä paikka on täynnä ikäviä muistoja ja hänen voimansa ovat


pilalla", sanoi englantilainen, tyynnytellen häntä. "Menkäämme
takaisin nukkumaan, vaimo."

"Nukkumaan!" hän vastasi. "En luule koskaan enään nukkuvani; ja


ilman unta tulen varmasti hulluksi. Oi, tuota näkyä! Luultavasti on
Mattain kirous kohdannut minua."

Joitakuita tunteja myöhemmin tapasimme taas toisemme suuressa


salissa, mutta Maya ei puhunut mitään unestaan, enkä minäkään
pyytänyt häntä sitä kertomaan, vaikka näinkin hänen kasvoistaan,
ettei se ollut unohtunut. Söimme, tai yrittelimme syödä, ja istuimme
hetken aikaa hiljaa, kunnes ovet avautuivat ja Dimas astui sisään,
joitakuita pappeja mukanaan. Pyytäen heitä jäämään loitommalle
hän yksin astui luoksemme ja tervehti ystävällisesti meitä.

"Olen pahoillani", hän sanoi, "että taaskin olette joutuneet tähän


synkkään komeroon, mutta minä en voinut auttaa asiaa, koska olen
vain
Neuvoston palvelija, ja Neuvosto oli antanut ankaran määräyksen.
Pelättiin vielä että lapsi häviäisi, jos saisitte olla vapaudessa."

"Pian se varmasti häviää, Dimas", sanoi Maya, "jos sitä pidetään


täällä pimeässä. Lapsi on jo heikentynyt — viikossa ehtii se kuolla."

"Älkää peljätkö, armollinen rouva; vankeutenne ei ole


pitkäaikainen, sillä tänä samaisena yönä, Vetten Nousuyönä, viedään
Teidät Neuvoston tutkittaviksi Kaikkein Pyhimpään, missä teitä
syytetään karkausrikoksesta."

"Onko muita syytöksiä?" kysyi Maya.

"Ei ole, armollinen rouva, mikäli minä olen kuullut. Mitä muita
syytöksiä saattaisi sitten olla?"

"Ja mikä on Neuvoston tuomio?"

"En osaa sanoa, armollinen rouva, mutta tiedän, ettei kukaan


tahdo tuomita teitä ankarasti, ja jos syytöksenne rouva Nahuaa
vastaan voidaan näyttää toteen, on siitä Teille etua. Yrittämänne
rikos on suuri sekä meidän silmissämme että kansan, sillä yötä
päivää puhutaan tuosta Pelastajasta, joka heille on syntynyt, eivätkä
he mielellään anna anteeksi niille, jotka ovat yrittäneet ryöstää sitä
heiltä. Luulen kumminkin että tuomitsijainne ankaruus on
lievennettävissä erinäisin asianhaaroin."

"Mitkä asianhaarat ne ovat?" kysyi Maya.

Dimas epäröi, mutta vastasi:


"Lain ankara pykälä määrää teidät jokaisen kuolemaan, ellei Teitä
itseänne säästetä sen perustuksella, että olette syntyessänne perinyt
Sydämen Ruhtinattaren arvon. Mutta voi olla niin, ettei Neuvosto
pane täytäntöön sitä kaikessa ankaruudessaan. Se voi tyytyä siihen,
että nämä muukalaiset saavat pitää henkensä, mutta joutuvat
karkoitetuiksi pois rannoiltamme."

"Mutta, Dimas, toinen heistä on mieheni."

"Totta kyllä, armollinen rouva, mutta lapsi on syntynyt!"

"En voi erota miehestäni. Parempi on meidän kuolla yhdessä kuin


erota. Jos ei kansa tarvitse häntä, ei se tarvitse minuakaan;
sanokaamme hyvästi sille ja lähtekäämme pois yhdessä. Olen
kyllästynyt tähän maahan, Dimas, sillä täällä kulkevat murhaajat
kantapäillämme ja elämä on tukalaa. En tahdo kansaltani mitään
muuta kuin saada vapauden päästä eroon siitä."

"Mutta, armollinen rouva, kansa tahtoo Teiltä jotakin; se tahtoo


lapsen. Näistä muukalaisista se pääsisi eroon surmaten heidät, tai
jotenkin muutoin, ja Teidät — siitä en kylläkään ole varma — se ehkä
päästäisi lähtemään heidän mukanaan; mutta lapsestanne se ei
koskaan halua luopua, sillä se on heidän Taivassyntyinen
kuninkaansa, ennustuksen poika. Jää jäljelle siis, jos Neuvosto ottaa
armahduksen huomioon — mikäli minä ja minun puolueeni olemme
enemmistönä — että Teidän on luovuttava joko miehestänne tai
pojastanne."

Silloin ilmestyi tuskan ilme Mayan kasvoille, jotta hän näytti kuin
äkkiä vanhentuneen. Sitten hän vastasi:
"Lähtekää ja ilmoittakaa niille, jotka lähettivät Teidät, Mayan,
Sydämen Ruhtinattaren, lausuneen näin: Lapseni on rakas minulle,
sillä se on liha minun lihaani; mutta mieheni on vieläkin rakkaampi,
sillä hän on sekä liha minun lihaani että sielu minun sieluani. Jos
minun täytyy valita näiden kahden välillä, valitsen hänet, joka on
läheisempi; sillä minähän voin saada toisen lapsen, mutta en
koskaan toista miestä."
KAHDESKYMMENESNELJÄS LUKU.

Nahua todistaa.

Joitakuita tunteja kului, ja taaskin ovet avautuivat ja Tikal astui


sisään viiden asemiehen seuraamana. Vartijajoukon jätti hän oven
ääreen, astuen itse meidän luoksemme salin toiseen päähän.

"Mitä tahdotte?" kysyi Maya. "Ettekö voi jättää minua rauhaan


edes vankikomerossanikaan?"

"Tahdon puhua kahden kesken kanssanne, Maya."

"Niinkuin olen Teille, Tikal, sanonut ennen, sanon nytkin, etten


halua kuulla Teitä kahden kesken. Jos Teillä on jotakin sanottavana,
sanokaa se mieheni ja ystäväni kuullen, tai jättäkää sanomatta
kokonaan."

"Puhutte röyhkeästi minulle, joka tulen tänne toivossa pelastaa


teidän kaikkien hengen", hän vastasi; "mutta mukaudun nyt, niinkuin
useasti ennenkin. Kuulkaa: Tiedän kaikki rikoksenne, sillä vaimoni
Nahua on ne paljastanut minulle. Tiedän teidän ja tuon kuolleen
roiston Mattain, johon Taivaan kirous on ansaitusti osunut,
sepittäneen ennustuksen ja ryöstäneen Kaikkein Pyhimmän, sillä
olen nähnyt todistuskappaleet."

"Tiedättehän meidän tehneen niin henkemme hädässä", sanoi


Maya, "sillä ellemme olisi niin tehneet, olisi Mattai murhauttanut
meidät, saavuttaakseen, toimittamalla minut tieltä pois, varman
aseman tyttärelleen."

"En tiedä miksi niin teitte enkä välitä tietää, sillä mikään ei voi
sovittaa sellaista rikosta; mutta luulen Teidän tehneen niin,
saadaksenne mieheksenne tuon valkoisen miehen. Joka tapauksessa
on teko tehty ja kosto odottaa teitä — kosto, josta säästytte vain
yhdellä ehdolla."

"Millä ehdolla?" kysyi Maya verkkaan, sillä kuultuaan Tikalin


tietävän kaiken, oli toivon hivenkin kadonnut hänen sydämestään,
niinkuin meidänkin.

"Maya, kaksi ihmistä elää, ja vain kaksi, jotka tietävät tämän asian
— vaimoni Nahua ja minä itse. Tähän aamuun asti oli vain yksi
ihminen, sillä Nahua kertoi sen minulle vasta huomattuaan ettette
päässeet pakoon, ja tämän hän teki aikeissa toimittaa surman Teille,
jota hän vihaa kilpailijattarenaan. Siksi olisi hän tahtonut pidättää
minua vainoamasta Teitä, ja siksi tahtoo hän saapua Sydämen
Neuvostoon tänä iltana, saadakseen varmasti nähdä Teidän kuolevan
Vetten Kuiluun. Mutta Teidän minä kaikkein vähimmin haluaisin
nähdä sinne häviävän, Teidän, jota nyt kuten aina rakastan,
enemmän kuin mitään muuta maan päällä."

Mutta silloin kalpeni englantilainen raivosta ja puuttui puheeseen:


"Suvaitkaa pitää nuo sanat suussanne, Tikal; sillä olkaa varma siitä
— ellette tottele, että teen yhden rikoksen lisää enkä laske Teitä
elävänä täältä. Ei tarvitse katsoa henkivartioihinne. Mitä välitän
heistä minä, jolla on vain yksi henki menetettävänä? Puhukaa vielä
noin, niin olette kuollut, ennenkuin he ennättävät apuun."

"Antakaa hänen jatkaa, mieheni", sanoi Maya; "eihän yksi


lisähäväistys meitä enään pahenna? Jatkakaa, kunnioitettavin Tikal;
mutta oman turvallisuutenne takia pitäkää varanne ja jättäkää
sanomatta kaikki sellainen, jota aviomies ei voi kuulla."

"Tästä syystä", hän jatkoi, välittämättä englantilaisen raivosta,


"olen minä tullut tänne esittämään ehdotustani, joka pelastaa teidät
kaikki; niin, jopa tuon kerskailevan valkoisen miehenkin, joka on
ryöstänyt Teidät minulta. Jos Nahua ja minä vaikenemme, kuka
tietää rikoksianne? Ja jos syytös heitettäisiinkin vasten kasvojanne,
kuka voi sen näyttää toteen? Niin, minä vaikenen — yhdellä ehdolla.
Tuonpa itse tuon oikean ennustuksen sekä Mattain tunnustuskirjan
ja poltan ne teidän nähtenne."

"Te vaikenette", sanoi Maya, "mutta miten on Nahuan laita?


Vaikeneeko hänkin?"

Silloin Tikalin tummat kasvot saivat pahan ilmeen ja kuvastivat


jotakin ajatusta, oliko se murhaa tai muuta, en tiedä.

"Jättäkää Nahua minun haltuuni", hän sanoi. "Peruuttakaa häntä


vastaan tekemänne lapsen murhayritystä koskeva syytös ja
vapauttakaa hänet velvollisuudesta saapua tänä yönä Kaikkein
Pyhimpään, ja minä vannon, ettei hän koskaan hiiskahdakaan tuosta
kamalasta salaisuudesta. Sitten jää teille vain yksi syytös — valanne
rikkominen yrittäessänne pakoon kaupungista — rikos, joka ei ole
anteeksiantamaton."
"Te puhutte ehdosta, Tikal; sanokaa mikä se on?"

"Te itse, Maya. Ei, kuulkaa minua; ja Tekin, valkoinen mies,


pysykää hiljaa. Jos vannotte Sydämen nimeen tulevanne vaimokseni
kuuden kuukauden sisällä tästä päivästä, niin minä puolestani
vannon, että tämä valkoinen mies — Teidän aviomiehenne, joka ei
ole oikea aviomiehenne, sillä hän sai Neuvoston avioliittolupauksen
petoksella — päästetään vaaratta ystävineen poistumaan tästä
maasta, ja annetaan heidän ottaa mukaansa matkalleen niin paljon
omaisuutta ja tarpeita, kuin he haluavat. Vannon myöskin — ja tästä
Te näette, miten syvä ja kunniallinen rakkauteni Teihin on — että
pojaltanne ei riistetä sitä asemaa, joka hänellä kansan silmissä on
Taivassyntyisenä pelastajana, jonka tulon jo ennustus tiesi. Minun
lapseni väistyy Teidän lapsenne tieltä, Maya. Jo kerran ennenkin
tarjosin Teille rauhan kättä, mutta Te hylkäsitte tarjoukseni ja petitte
minut, ja tuo hylkäys aiheutti isänne kuoleman ja monta muuta
surua. Älkää enään hyljätkö, Maya, muutoin surut suurenevat ja
lisääntyvät Teille, meille kaikille. Ei ole kummallista eikä luonnotonta
minun pyytää Teitä vaimoksi miehelle, jonka kanssa olette ollut
kihloissa monet vuodet, sekä ottamaan vastaan kaupungin
ensimäisen naisen paikkaa, sen sijaan että seuralaistenne kanssa
antautuisitte hirveimpään kuolemaan."

"Se on sittenkin mitä kummallisinta ja luonnottominta, Tikal, että


vaimoa näin pyydetään miehestänsä eroamaan. Kuulkaahan —
hänellehän Teidän on puhuttava eikä minulle, sillä hänhän voi olla
iloinen, päästessään tällä keinoin vapaaksi. Ensinnä, mitä mieltä Te,
Ignatio, olette? Sanokaa minulle — vaikka minä pelkään
vastaustanne, sillä se on helppo arvata, koska Tikal tarjoo kaiken,
mitä haluatte — vapauden ja aarteita kyllin aikeittenne
toteuttamiseksi."
"Totta kyllä, armollinen rouva", minä vastasin, "että hän lupaa
minulle tuon kaiken — vaikken tiedäkään, voiko hän antaa sitä; totta
on myöskin, ettei minulla ole täällä vaimoa, joka minun olisi
jätettävä, eikä muuta toivetta kuin kavaltajan kuolema. Mutta minä
muistan erään tuolla erämaassa Teille antamani lupauksen, kun Te
urheudellanne pelastitte miehenne hengen; ja minä muistan
niinikään, että ystäväni juuri minun kehoituksestani tuli lähteneeksi
tähän kirottuun kaupunkiin. Sentähden vastaan, että kaikkien
kohtalo olkoon yksi ja sama."

"Nuo ovat jaloja sanoja, ystävä", Maya sanoi, "sanoja, jotka voivat
lähteä vain Teidän jalosta sydämestänne. No, mieheni, nyt on Teidän
vuoronne."

"Minulla ei ole mitään sanottavaa", vastasi englantilainen


naurahtaen, "paitsi ehkä sitä, että ihmettelen, miksi kulutatte aikaa,
jonka onnellisemmin voisimme viettää keskenämme, kuuntelemalla
tuon veijarin herjauksia. Jos pyydätte minua ajattelemaan
pelastusta, ajattelen minä sitä, mutta en varmasti astu askeltakaan
luotanne pelastaakseni itseäni mistään kuolemasta."

"Tuntuu kuin olisin jo saanut vastauksen", sanoi Tikal. "Kunpa vain


ei kukaan teistä katuisi tänä iltana, joutuessaan katsomaan alas
Vetten Kuiluun. Hyvä, aika kiitää, ja minulla on paljon tekemistä,
ennenkuin taas tapaamme." Ja hän kääntyi pois luotamme.

Silloin valtasi Mayan epätoivo. Hetken hän taisteli sitä vastaan,


mutta huusi sitten:

"Tulkaa takaisin, Tikal!"


Hän tuli ja seisahtui Mayan eteen kylmän äänettömänä, ja Maya
kääntyi miehensä puoleen, sanoen hitaalla äänellä:

"Olette liian kiireissänne; minun vastaukseni ei vielä ole annettu,


mieheni. Tikal, hyväksyn ehdotuksenne. Estäkää Nahua todistamasta
meitä vastaan; hävittäkää hänen hallussaan olevat todistuskappaleet
ja viekää nämä miehet turvallisesti vuorten tuolle puolen, antaen
heille kaikki, mitä he haluavat; niin minä suostun kuuden kuukauden
kuluessa tulemaan vaimoksenne."

Englantilainen ja minä tuijotimme toisiimme hämmästyksen


valtaamina.

"Oletteko hullu?" sanoi englantilainen, "vai tahdotteko pelastaa


meidät puhumalla tuollaisia?"

"Olisiko ihme, mieheni", hän vastasi, "jos haluaisin pelastaa itseni


ja lapseni? Että olen rakastanut ja vieläkin rakastan Teitä, sen Te
tiedätte; onko haudassa sitten enään rakkautta? Eläissäni on minulla
ainakin muistot; kun kuolen, viedään nekin pois minulta. Menkää
takaisin, mieheni, menkää rikkaana takaisin oman kansanne luo ja
oman entisen elämänne keskuuteen, ja valitkaa toveriksenne joku
toinen nainen. Älkää kumminkaan minuakaan unhoittako; mutta
antakaa minun tulla kuin uneksi Teille, se on oman asianne takia
paljon parempi. Teillekin, Ignatio, minä sanon, menkää!
Tuttavuutemme on tuonut Teille vähän onnea; olkoon sen
loppuminen onnekkaampi ja saattakoon toiveenne vihdoin
täytäntöön. Tikal, antakaa kätenne, ja vannokaamme vala."

Tikal astui häntä kohti — silmät säihkyen voitonriemua; mutta kun


kädet olivat koskettamaisillaan toisiaan, katsahti Maya sivulleen ja
näki miehensä kasvoilla kuvastuvan epäilyksen ja tuskan. Kiljahtaen
astui hän hänen luokseen ja syöksyi hänen syliinsä, sanoen:

"Antakaa anteeksi; olen ponnistanut kaikkeni, mutta tämä käy yli


voimieni. Oi, kuinka heikko minä olen, en voi erota Teistä, en edes
pelastaakseni henkenne. Ettehän varmastikaan usko, että olisin
täyttänyt valani ja mennyt naimisiin hänen kanssaan? Ei, ei —
kuolemaan minä olisin mennyt lähdettyänne. Mutta en voi erota
Teistä — en voi erota Teistä vaikkakin itsekkäisyyteni on
perikatonne."

"Iloitsen kuullessani sen", sanoi englantilainen. "Kuulkaahan, Tikal,


jos olette mies, tuokaa miekka minulle, niin ratkaisemme asian
kahden kesken. Silloin ainakin toinen selviää epätietoisuudestaan ja
vastuksistaan."

"Valkoinen mies", vastasi Tikal, "Te olette varmasti sekä hullu että
roisto, muutoin tuskin pyytäisitte minua panemaan henkeäni
onnenpeliin Teidän henkeänne vastaan, joka jo lain mukaan on
arvoton. — Hyvästi, Maya; kauan olette juoksuttanut ja kiduttanut
minua, tänä iltana saatte kaikesta palkkion." Niin hän lähti.

Olisi luullut, että me Tikalin mentyä olisimme ruvenneet pohtimaan


tapahtumaa sekä kohta koittavia vaaroja. Mutta niin ei ollut
asianlaita. Luulen meistä tuntuneen — kaikista meistä — ettei ollut
enään mitään pohtimista. On turhaa potkia Kohtaloa vastaan, ja on
vieläkin turhempaa pelätä sitä, sillä teimme tai jätimme tekemättä
jotakin, Kohtalolla kuitenkin aina viimeinen sananvalta on.

Niin me istuimme ja juttelimme mitättömistä asioista


elämästämme Cumarvon kaivoksessa, Santa Cruzin maatilalla
viettämästämme yöstä, urhean seuralaisemme Molasin kuolemasta,
enkä muistakaan, mistä kaikesta. Siinä samassa lapsi heräsi, ja
vanhemmat hoivailivat sitä, löytäen kumpikin toistensa näköä sen
pikku kasvoissa, minun kulkiessani pitkin salia, lukien lamppuja,
poltellen ja aprikoiden, missä olisin seuraavana iltana samaan
aikaan.

Vihdoin ovet aukenivat, sillä oli jo miltei puoliyö, ja sisään astui


Dimas ja joukko pappeja. Vanhus teki kumarruksen ja ilmoitti, että
oli aika viedä meidät Kaikkein Pyhimpään Neuvoston tutkittaviksi, ja
ettei meidän tarvinnut pelätä, koska kaikesta siitä päättäen, mitä hän
oli kuullut, rikostamme käsiteltäisiin lievästi. Maya kysyi, miten oli
pikku lapsen laita, jota ei voitu jättää yksin, ja pappi vastasi, että
Mayan oli se otettava mukaan, jolloin hän alkoikin kietoa sitä
vaippaan.

"Se on turhaa vaivaa", sanoi Dimas. "Täältä kulkee salainen


käytävä Kaikkein Pyhimpään, jota myöten minä lupaan viedä Teidät,
jottei yön kylmyys palelluttaisi pienokaista, meidän herraamme."

Sitten otti hän avainkimpun vyöltään, ojensi sen eräälle


seuralaiselleen ja käski hänen mennä muutamien pappitoveriensa
kanssa edellä ovia aukomaan ja sytyttämään käytävien lamppuja.
Pappi lähti, ja pienen ajan kuluttua lähdimme mekin ja tapasimme
hänet seisomassa käytävää ja Kaikkein Pyhintä erottavan
marmoriseinän luona. Nähtyään meidän lähestyvän hän lausui
tunnussanat, joihin vastattiin sisältä; sitten hän avasi hopea-
avaimella salaoven, jättäen avaimen kimppuineen riippumaan
lukkoon, jotta Dimas saisi ottaa pois sen tullessaan. Sitä tuo vanha
pappi ei kuitenkaan tehnyt, sillä hän ajatteli meidän kaikkien
palaavan tämän käytävän kautta, ja kun hän astui Kaikkein
Pyhimpään, tyytyi hän vetämään oven kiinni, lukitsematta sitä.
Taaskin me seisoimme tuossa synkässä pyhässä paikassa,
kuulemassa Sydämen Kaupungin lakeja vastaan tehtyjen rikostemme
tuomiota. Siellä oli koolla koko Neuvosto, ja Tikal, sen ylipappi ja
puheenjohtaja, istui alttarin takaisella istuimellaan, mutta minä
havaitsin ilokseni, ettei Nahua istunutkaan hänen vierellään, eikä
häntä liioin näkynyt koko Neuvoston jäsenten joukossa.

Istuuduimme meille määrätyille tuoleille alttarin edessä olevalle


avoimelle kohdalle, Maya keskelle ja englantilainen ja minä
kummallekin puolelle häntä, Oikeuspappi nousi sitten seisomaan ja
ilmoitti, että Neuvoston ensimäinen asia oli kolmen jäsenensä,
Mayan, Sydämen Ruhtinattaren, hänen miehensä, Meren Pojan, sekä
Ignatio Vaeltavan, Sydämen Haltijan, tutkiminen Neuvoston jäseninä
tekemiensä valojen rikkomisesta. Esittäen tämän muodollisen
syytöksen, luki pappi selvästi mutta lyhyesti meitä vastaan tehdyt
syytökset.

"Samana Vetten Nousun juhlayönä vuosi sitten", hän alkoi,


"vannoitte te, muukalaiset, alttarin ääressä sielunne ja ruumiinne
uhalla valan, ettette ilman tämän korkean Veljesliiton lupaa yrittäisi
lähteä Sydämen Kaupungin rajojen ulkopuolelle. Mutta muuanna
päivänä saatiin teidät kiinni pakomatkaltanne yli vuorten erämaahan.
Eikä siinä vielä koko rikoksenne, sillä veitte Sydämen Ruhtinattaresta
ja valkoisesta miehestä syntyneen pojan, Ennustuksen
Taivassyntyisen lapsen, jonka katalasti aioitte ryöstää kansalta.
Sanokaa, miten puolustaudutte näitä rikoksia vastaan?"

"Tunnustamme syytöksen oikeaksi", vastasi Maya, "mutta


pyydämme ottamaan huomioon puolustuksemme. Kuulkaa, herrat:
Aina siitä illasta asti, kun me teidän käskystänne jouduimme
naimisiin, on miestäni ja minua vaaninut surmaaja, ja tuossa istuu
Neuvostomme puheenjohtajana ja Sydämen ylipappina mies, jolla oli
aikomus ottaa hengiltä meidät. Näen joukossanne tänä iltana myös
joukon henkilöitä, jotka, samana päivänä kuin pakenimme, kävivät
luonamme Lordi Dimasin johdolla. Mitä kertoivat he minulle? Että oli
saatu ilmi serkkuni Tikalin muodostama salaliitto, jonka oli määrä
murhata mieheni, lapseni ja ystäväni Ignatio Vaeltava. He ilmoittivat
myös minulle, että Tikal erotettaisiin tämän ja muidenkin rikostensa
takia, ja että tämä sylissäni oleva lapsi nimitettäisiin Sydämen
kansan päälliköksi. Eikö ole niin, Dimas?"

"Niin on, armollinen rouva", hän vastasi, "ja tietäkää, ettette te ole
ainoat tänä iltana syytetyt. Vaikka teidän asianne on ensinnä,
seuraavat ylipappi Tikalin ja muiden asiat perästäpäin; mutta siihen
asti istuu hän arvonsa mukaisesti Neuvoston puheenjohtajalta."

Silloin Tikal hypähti istuimeltaan, mutta Dimas kääntyi hänen


puoleensa ja sanoi ankarasti: "Vaietkaa, herra, tai puhukaa vain,
mitä velvollisuutenne vaatii. Olkoon tuomionne oikeudenmukainen,
mutta tietäkää, ettei pako ole mahdollinen, sillä henkivartijoiltanne
on otettu aseet pois, ja kaikkia teitä vartioidaan."

Tikal istuutui jälleen, ja Maya jatkoi:

"Saman päivän iltana, jolloin Lordi Dimas oli käynyt luonani, olin
yksin huoneessani, ja Ruhtinatar Nahua, Tikalin puoliso, hiipi
luokseni aikoen surmata lapseni."

Sitten hän kertoi koko jutun, miten englantilainen ja minä,


kuultuamme hänen avunhuutonsa, olimme kiirehtineet huoneeseen
ja vanginneet ja sitoneet Nahuan.
"Veljet", hän jatkoi, "silloin valtasi meidät yhtäkkiä kauhu, ja me
päätimme paeta pois maasta, missä henkemme ei ollut hetkeäkään
turvattu. Tässä on rikoksemme, ja me annamme rangaistuksen
teidän käsiinne. Olihan varmasti meidän parempi yrittää pelastaa
lapsikin, jotta se voisi suorittaa elämäntehtävänsä, minkä tahansa,
kuin jättää se niiden surmattavaksi, jotka te olette nostaneet
hallitsijoiksenne."

Mayan lopetettua puheensa käännyimme, englantilainen ja minä,


vuorostamme Neuvoston puoleen, todistaen oikeaksi Mayan syyt ja
ilmoittaen alistuvamme Veljesliiton tuomittaviksi.

Sitten meitä käskettiin siirtymään loitommalle, ja me asetuimme


Nimettömän jumalan naamion alle odottamaan tuomiotamme,
Neuvoston jäädessä harkitsemaan. Hetken perästä meidät kutsuttiin
taas esiin, ja Tikal ilmoitti tuomiomme sysätyn siksi, kunnes olisi
käsitelty syytös Nahuaa, Mattain tytärtä sekä häntä itseään, Tikalia,
Sydämen Kaupungin päällikköä ja ylipappia vastaan, lisäten hitaalla
ja riemuitsevalla äänellä:

"Tuotakoon ulkopuolella odottava Nahua, Mattain tytär, Sydämen


läheisyyteen."

Kuulimme ja kokosimme rohkeutta lähestyvän kuoleman varalle,


sillä tiesimme loppumme olevan käsissä, uskaltamatta toivoa armoa
ja pelastusta.

Ovi aukeni ja Nahua astui sisään arvonsa mukaisissa pukimissa,


otsalla vihreä, vain päälliköiden vaimojen ja äitien oikeuksiin kuuluva
otsavyö.
"Miksi suvaitsette kutsua minut tänne, herrat?" hän sanoi ylpeästi,
astuttuaan alttarin luo.

Silloin nousi Oikeuspappi seisomaan ja luki syytöksen, että hän oli


yrittänyt omin käsin surmata Mayan, Sydämen Ruhtinattaren
poikalapsen, ja että hän niinikään oli ollut miehellensä Tikalille
avullisena monessa julmuudessa ja väärinkäytössä, pyytäen Nahuaa
puolustautumaan.

"Viimeistä syytöstä en tunnusta",.hän sanoi. "Vastatkoon Tikal itse


omista pahoista töistään. Ensimäisen tunnustan. Yritin kyllä nujertaa
tuon kakaran, mutta Maya huomasi minut, ja minut ehkäistiin ja
sidottiin."

"Veljet", sanoi Dimas, nousten seisomaan, "meidän ei tosiaankaan


tarvitse tästä asiasta enempää keskustella. Olemme kuulleet
Ruhtinatar Mayan ja muiden puolustuksen, ja nyt Nahua tunnustaa
rikoksensa. Hän tunnustaa yrittäneensä surmata tuon lapsen, jonka
hän tiesi pyhäksi, Sydämen kansan toivoksi, ja sellaiselle rikokselle
löytyy mielestäni vain yksi, vaikkakin kamala rangaistus, ja hän,
jonka on kärsittävä, on vielä korkeassa asemassa oleva nainen."

"Seis!" katkaisi Nahua. "Ette ole kuulleet minua loppuun, ja


minulla on oikeus puhua, ennenkuin minut tuomitaan kuolemaan.
Syytätte minua pyhän lapsen, Sydämen kansan toivon
murhayrityksestä, ja totisesti, jos näin asianlaita olisikin, ansaitsisin
kuoleman, jota vastoin itse asiassa ansaitsenkin teidän kiitoksenne.
Sydämen ylimykset, tämä lapsi, jota te ihailette, Ennustuksen
Taivassyntyinen lapsi, jonka te tänä iltana aioitte nimittää päälliköksi,
erottaen mieheni Tikalin, ja jonka teidän mielestänne pitäisi oleman
heimomme johtotähtenä suuruuteen ja valtaan, se onkin elävä
valhe, petos, vääryys!"
Silloin puhkesi Neuvoston kesken hämminki, ja ankarat äänet
käskivät hänen lopettaa nuo häväistykset; mutta hän sai
hiljaisuuden, jatkaakseen:

"Kuulkaa minua, minä pyydän, sillä vaikka minä haluaisinkin, en


uskaltaisi puhua umpimähkään, mutta minä voin näyttää toteen
jok'ainoan lausumani sanan. Luulette minun aikoneen surmata
tämän lapsen murtaakseni kilpailijattareni Mayan sydämen — ja
totisesti minä haluankin sen murtaa; ja toimittaakseni oman lapseni
tuon lapsen tilalle — ja totisesti minä haluankin hänet siihen
toimittaa. Mutta nämä eivät sittenkään olleet tekoni vaikuttimia.
Neuvoston ylimykset, kuulkaa kertomusta, joka on kummallisin, mitä
koskaan olette kuulleet, ja lausukaa sitten tuomionne minusta,
miehestäni Tikalista, kilpailijattarestani Mayasta sekä hänen
ystävistään. Tunsitte kaikki hyvin isäni Mattain, sillä kuollessaan ja jo
Tikalin hallituksen alusta asti oli hän lähinnä Tikalia Sydämen Kansan
vaikutusvaltaisin mies, hoitaen niitä tehtäviä jotka nyt ovat Dimasin
hallussa, muun muassa Kaikkein Pyhimmän Isännän virkaa. Mutta
isäni Mattai ei ollut kuitenkaan rehellinen mies. Voi! että minun
täytyy sanoa se, sillä hän teki syntinsä enemmän minun takiani kuin
itsensä takia, koska hän rakasti minua ja piti kaikessa
silmämääränään minun hyvinvointiani. Tämä hänen rakkautensa vei
hänet perikatoon, saaden hänet rikkomaan jumalaansa, lakejaan ja
maataan vastaan. Alusta asti, kun vielä olin lapsi, tiesi hän minun
mielistyneen Lordi Tikaliin, joka oli kihloissa neiti Mayan kanssa;
sitäpaitsi tiesi hän minun olevan kunnianhimoisen ja haluavan tulla
suureksi. Siitä syystä uskotteli hän Tikalille saaneensa Taivaasta
tiedon, että neiti Maya oli isineen kuollut erämaahan. Saatuaan
hänet vakuutetuksi, että Maya näin ollen oli kadonnut häneltä
ikuisesti, hän hätyytti Lordi Tikalia naimaan minut, luvaten
korvaukseksi toimittaa hänet Sydämen Kansan päälliköksi. Kaiken
tämän hän teki, vaikken minä tiennyt asioista mitään, vaan luulin
mielettömyyksissäni Tikalin naineen minut rakkaudesta.

"Sitten Zibalbay palasikin hää-iltanamme, ja hänen mukanaan


Maya sekä nämä muukalaiset; ja siitä hetkestä asti alkoi mieheni
vihata minua, koska olin hänen rakastamansa Mayan paikalla. Kuten
jälkeenpäin kuulin, meni Tikal Zibalbayn luo vankikomeroon ja lupasi
luovuttaa hänelle valtansa koko hänen lopuksi ijäkseen ja olla
vastustamatta hänen aikeitaan, jos saisi Mayan puolisokseen, kun
hän ensin olisi toimittanut minut tieltä pois, joko surmaten tai
muuten. Zibalbay olisikin mielellään suostunut; mutta sattuikin niin,
että Maya oli mielistynyt erämaamatkoillaan tuohon valkoiseen
mieheen, ja kieltäytyi eroamaan hänestä. Mieheni olisikin ehkä
päässyt aikeittensa perille, sillä vankien tila oli toivoton ja vaihtoehto
oli kuolema, ellei isäni Mattai olisi keksinyt keinoa, miten kaikki
olisivat pelastettavissa ja minä pysyisin edelleen päällikön vaimona.
Tällainen oli keino, herrat: että tuohon Sydämen tunnusmerkkiin
pantaisiin semmoinen ennustus, joka pettäisi Sydämen Neuvoston ja
toimittaisi Mayan naimisiin rakastamansa valkoisen miehen kanssa.
Herrat, näin tehtiin. Yön hiljaisuudessa hiipivät he kaikkein
Pyhimpään, valtasivat Sydämen ja panivat sinne tuon Pelastajan
syntyä ennustavan kirjoituksen. Lopun tiedätte itse."

"Se ei ole totta", huusivat monet äänet. "Sellainen pyhänhäväistys


on mahdoton."

"Se on totta", vastasi Nahua, "ja minä todistan teille, että tuo
pyhäinhäväistys oli mahdollinen. Sydän avattiin, ja isäni tekemä
väärä ennustus pantiin sisään, mistä te sen löysitte Vetten Nousun
yönä vuosi takaperin. Mutta katso, kun pyhä sydän avattiin — se ei
ollutkaan tyhjä, vaan siinä oli toinen ennustus — oikea ennustus —
joka pantiin talteen, jotta petos selviäisi aikanaan."

"Missä sitten on tuo kirjoitus?" kysyi Dimas.

"Tässä", hän vastasi, vetäen levyn povestaan. "Kuulkaa!" Ja hän


luki:

"Nukkunut Silmä herää ja näkee roistojen sydämen ja


tarkoituksen. Sanon, ettei kaupunkimme hävityshetkenä edes kaikki
Pyhän Järven aallot riitä huuhtomaan pois heidän syntiänsä."

"Ottakaa ja katsokaa itse, ylimykset", hän jatkoi, pannen levyn


alttarille. "Kuulkaahan vielä, miten tämä esine joutui minun käsiini.
Isäni tehtyä tuon suuren synnin, kohtasi Nimettömän jumalan kirous
häntä, — hän sai, kuten tiedätte, tuon kamalan taudin.
Kuolinvuoteellaan valtasi hänet katumus, ja hän kirjoitti erään
paperin, jonka hän todistutti ja antoi minulle, liittäen mukaan tuon
levyn. Minä pidin hallussani tuota paperia, ylimykset; kuulkaa, mitä
siinä sanotaan, ja päättäkää, olenko puhunut totta vai valhetta." Ja
hän luki ääneen Mattain tunnustuksen, missä juurta myöten
selitettiin meidän juonemme.

"Nyt, ylimykset", hän lisäsi, kun kirjoitus oli lopussa ja kirjaimia


tutkittu, "ymmärrätte, miksi yritin raivoissani tappaa tuon lapsen,
jota on uskoteltu teille jumalan antamaksi, ja minä jätän teidän
huoleksenne toimittaa rankaisun niille, jotka ovat tuon petoksen
punoneet."
KAHDESKYMMENESVIIDES LUKU

Jäähyväiset.

Nahua lopetti ja istuutui, ja niin suuri oli Neuvoston ihmetys — tai


paremminkin kauhistus — ettei hetkeen aikaan kukaan puhunut
mitään. Vihdoin nousi Dimas ja sanoi:

"Maya, Sydämen Ruhtinatar, ja te muukalaiset, olette kuulleet teitä


vastaan tehdyn kamalan syytöksen. Miten voitte vastata siihen?"

"Tunnustamme sen todeksi", vastasi Maya tyynesti. "Meidän oli


pakko valita joko kuolema tai tämän teon tekeminen, ja me
valitsimme elämän. Mattaihan tuon petoksen punoi ja sepitti
kirjoituksen, ja minusta tuntuu että meidän on kärsittävä sekä hänen
syntinsä että omamme. Sananen vielä: Tämä Ignatio ei ryhtynyt
vapaasta tahdosta salajuoneen, vaan mieheni ja minä pakotimme
hänet siihen, minä etupäässä."

Dimas ei vastannut, vaan antoi merkin kahdelle, alttaria


paljastetuin miekoin vartioivalle papille viedä meidät Kaikkein
Pyhimmän ja Kuolleitten Kammion väliseen käytävään, mihin meidät
suljettiin pimeään, kaksois-ovien väliin.
Täällä minä kaiken lopuksi polvistuin, lähettäen viimeiset
rukoukseni Taivaalle, Mayan itkiessä miehensä sylissä ja jättäessä
hyvästi hänelle ja sylissään lepäävälle lapselleen.

"Vaimoni", hän sanoi, "olitte tosiaankin viisas, kun kielsitte meitä


lähtemästä tähän Sydämen Maahan. Vaan tehtyä ei saa
tekemättömäksi, ja oltuamme vähän aikaa onnellisia yhdessä,
kuolkaammekin yhdessä niin urheasti kuin voimme, toivoen taaskin
pääsevämme yhteen johonkin uuteen rauhan maailmaan."

Pian saapuivat papit ja veivät meidät takaisin Kaikkein Pyhimpään.


Mayan astuttua yli kynnyksen ensimäisenä meistä kolmesta, astui
Tikal häntä vastaan ja sieppasi yhdellä tempauksella, olematta silti
julma, lapsen hänen sylistään. Huomasimme meitä tarkoittavat
valmistukset, sillä alttarin edessä oleva kivi oli nostettu paikoiltaan ja
jalkojemme juuressa ammotti musta kuilu, mistä kuului veden loiske.
He asettivat meidät seisomaan selät alttariin; mutta Tikal seisoi
etumaisena, ja hänen ja meidän välillä oli kuilun suu.

"Maya, päällikkö Zibalbayn tytär, Sydämen Ruhtinatar; valkoinen


mies, Meren Poika; Ignatio Vaeltava; ja pappi Mattai, jonka itsensä
jo kuoltua me kutsumme hänet hengessä esiin", alkoi Dimas kylmällä
ja kamalalla äänellä, "oman tunnustuksenne mukaan olette te
vikapäät suurimpaan rikokseen, minkä katala ihmisjärki konsanaan
voi keksiä ja likaiset kädet suorittaa. Olette rikkoneet Taivaalle ja
veljillenne tekemät juhlalliset valat; olette häväisseet jumalamme ja
raiskanneet hänen Kaikkein Pyhimpänsä; ja olette uskotelleet
kansalle, joka luotti teihin, synnin sikiötänne jumalan lähettämäksi
hallitsijaksi. Kaikista näistä rikoksista, jotka olette tehneet — miksi,
emme tiedä — emme taida teitä kyllin rangaista. Teille maksetaan
palkka jossain muualla, kun olette menneet tämän tuomio-istuimen
edestä, ja nimenne ovat jääneet unohdukseen maan päällä.

"Näin kuuluu Sydämen Neuvoston tuomio — että sinun nimesi,


Mattai, pyyhitään pois Sydämen palvelijain luetteloista; että muistosi
kirotaan; että asunnoitasi kärventäisi tuli ja istuimiasi polttaisi suola;
että ruumiisi kaivettaisiin haudastaan ja vietäisiin pyramiidin huipulle,
kunnes ilman linnut sen söisivät; että sielusi annettaisiin manalan
kiduttajien käsiin ijankaikkisesti.

"Näin kuuluu Sydämen Neuvoston tuomio sinulle, Maya, päällikkö


Zibalbayn tytär, Sydämen Ruhtinatar; valkoinen mies, Meren Poika,
ja Ignatio Vaeltava: Että nimenne pyyhitään pois Sydämen Veljien
luettelosta ja kirotaan kaupungin kaduilla; että kätenne ja jalkanne
sidotaan ja teidät kahlehditaan elävinä Kaikkein Pyhimmän seiniin ja
jätetään ryöstämänne jumalan alttarin ääreen, kunnes näännytte
nälkään ja janoon; että ruumiinne sitten viedään pyramiidin huipulle
ilman lintujen syötäväksi; ja että sielunne annetaan manalan
kiduttajien käsiin ijankaikkisesti."

Lausuttuaan nämä sanat ja ennenkuin täysin tajusimmekaan


kamalan tuomiomme kauheutta, astui Tikal esiin — vielä
kirjoittaessanikin minua puistattaa — pitäen lapsi rukkaa, joka alkoi
itkeä kuin tuskasta tai pelosta, kuilun päällä ja pudotti sen yht'äkkiä
alas syvyyksiin.

Kauhistuneen äidin huuto kaikui pyhän paikan seinissä, ja


ennenkuin sen kaiku oli edes ehtinyt hälvetä, oli englantilainen —
jalopeuran tavoin — hypännyt yli kuilun ja tarttunut Tikalla kiinni
kurkusta ja vyötäisiltä. Raivo antoi voimia hänelle, ja hän nosti
Tikalin korkealle ilmaan ja paiskasi hänet alas tuohon kaameaan
kuiluun, minne lapsikin vastikään oli hävinnyt.
Pahasti parahtaen katosi Tikal, ja hetken aikaa oli kuolon
hiljaisuus.
Yhtäkkiä huusi Maya hullun ja epätoivoisen äänellä:

"Eivät kaikki Pyhän Järven vedet riitä pyyhkimään pois meidän


syntiämme, mutta tuokoot ne koston teille, oi te avuttoman lapseni
surmaajat!"

Näin sanottuaan Maya juoksi alttarin taakse, minun ehkä yksin


aavistaessa hänen aikeensa, ja tarttui molemmin käsin Sydämen
tunnusmerkkiin.

"Varokaa!" huusi Dimasin ääni, mutta hän ei totellut. Ennenkuin


hän tai kukaan muu ehti apuun, oli hän raastanut epätoivoisin
ponnistuksin vanhan tunnusmerkin paikoiltaan ja nauraen ja pilkaten
paiskannut sen palasiksi marmorilattiaa vastaan.

Hetken aikaa vallitsi hiljaisuus; mutta sitten kuului alttarilta


yhtäkkiä paukahdus, aivankuin harpun kielet olisivat katkenneet, ja
sitä seurasi toinen, hirveämpi ääni, vesipaljouksien kuohu ja kohina.

"Paetkaa! Paetkaa!" huusi ääni, "vedet ovat valloillaan, ja häviö


perii meidät ja koko Sydämen Kansan!"

Silloin hyökkäsi Neuvosto yhtenä miehenä Kaikkein Pyhimmän


ovea kohti; mutta minä, Ignatio, Jumalan kiitos, muistin toisen oven,
salaoven, josta olimme tulleet ja jonka pappi oli jättänyt raolleen.

"Tätä tietä!" huusin minä espanjankielellä englantilaiselle ja.


tarttuen Mayaa käsivarteen, vein hänet mukanani käytävään. Kun
kaikki kolme olimme päässeet sinne, käännyin minä lukitsemaan
ovea ja näin silloin kummallisen näyn.

You might also like