From 5db3335dce766bd679c54ea44f6df08a7ff74762 Mon Sep 17 00:00:00 2001 From: obscuren Date: Thu, 26 Dec 2013 12:45:52 +0100 Subject: [PATCH] Initial commit --- .ethereum.go.un~ | Bin 0 -> 341697 bytes big.go | 20 +++++ block.go | 21 +++++ block_manager.go | 55 +++++++++++++ ethereum.go | 33 ++++++++ parsing.go | 113 ++++++++++++++++++++++++++ parsing_test.go | 42 ++++++++++ serialization.go | 57 +++++++++++++ serialization_test.go | 20 +++++ transaction.go | 126 +++++++++++++++++++++++++++++ vm.go | 182 ++++++++++++++++++++++++++++++++++++++++++ 11 files changed, 669 insertions(+) create mode 100644 .ethereum.go.un~ create mode 100644 big.go create mode 100644 block.go create mode 100644 block_manager.go create mode 100644 ethereum.go create mode 100644 parsing.go create mode 100644 parsing_test.go create mode 100644 serialization.go create mode 100644 serialization_test.go create mode 100644 transaction.go create mode 100644 vm.go diff --git a/.ethereum.go.un~ b/.ethereum.go.un~ new file mode 100644 index 0000000000000000000000000000000000000000..42e42bcb6e88f9bb1c9bf6e5e4a3cbefcaac2fc2 GIT binary patch literal 341697 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