Raspberry PI3 or TinkerBoard support?


Can epoch be compiled? I saw hans was doing something about trying to compile on raspberry 8 months or so ago. But, can it be done now?


I will try this tomorrow and will get back to you.


As long as you don’t try to mine I don’t think there should be any problems with this…


as far as I know you need to be able to validate the signatures in the node, and this depends on the miner? if it doesn’t then that would be really good for me! :smiley:


make[1]: Entering directory ‘/root/epoch/otp_patches’
Patches = [“20.1/mnesia.erl.patch”,“20.1/mnesia_index.erl.patch”]
ERROR: [{error,not_found},{error,not_found}]
Makefile:6: recipe for target ‘compile’ failed
make[1]: *** [compile] Error 1
make[1]: Leaving directory ‘/root/epoch/otp_patches’
===> Hook for compile failed!

Ok, i got stopped here.

distribution is: “Ubuntu 18.04.1 LTS” aka bionic
running on asus tinker board
erlang version is “Erlang/OTP 20 [erts-9.2] [source] [smp:4:4] [ds:4:4:10] [async-threads:10] [kernel-poll:false]\n”


The verification of blocks is all in the node, I.e. in Erlang and does not depend on the miner, nor mining!


What about Proof of Work verification :slight_smile: You do need the miner’s binaries for that…


No, that is all done in Erlang so there is no need to compile the miner…

Overwritten chain

so how do i get past the otp error?

how is this solved it this does not compile, even without cuckoo


Hey, @hanssv has forwarded your question to another team member. Waiting for his reply. (I removed the “solved” part)



Have you verified that your current Erlang/OTP version is 20.x?

Ulf W


I see that you reported erts-9.2 (20.3, I assume).

It looks like the escript finds the .beam files, but not the corresponding .erl files.

You might want to try using kerl to build and install OTP 20.3.

Removing cuckoo from the build is a bit messy, but that will be a later step. :slight_smile:


if you check my message it says

erlang version is “Erlang/OTP 20 [erts-9.2] [source] [smp:4:4] [ds:4:4:10] [async-threads:10] [kernel-poll:false]\n”

So not 20.1 nor 20.3, 20.0 it seems.
But it is ubuntu 18.04.1 so the package is not the same as in x64 ?


I tried this:

erl -eval '{ok, Version} = file:read_file(filename:join([code:root_dir(), "releases", erlang:system_info(otp_release), "OTP_VERSION"])), io:fwrite(Version), halt().' -noshell

and it returned 20.2.2, but the point is, that is the exact same version on ubuntu 18.04.1 so. why does it fail on arm7 ubuntu 18.04.1 ?

and it works perfectly on x86_64


A workaround could be to remove the otp_patches directory entirely. You’d also have to remove some lines in rebar.config pertaining to otp_patches. Epoch isn’t currently using the functionality that the patches correct.

You’ll need to perform some magic on the cuckoo compilation, or remove it entirely. I wasn’t able, during a first attempt, to get through the compilation of cuckoo on my TinkerBoard. To remove it, you’ll need to remove the dependency to aecucko in aecore/src/aecore.app.src, and check rebar.config for mentions of aecuckoo. I haven’t tried this, so there may be some other things that need to be done.


you do realize saying it doesn’t use some included code is… well… funny?

Ok, I already removed cuckoo on arm, so i will try removing otp patches as well.


Ok, i removed otp_patches, and aecuckoo and compiled it.

Then tried bin/epoch start and nothing happened, I was trying to see if there was a way to start it in debug mode to see what was going on, andi found you can use “bin/epoch console” and… that works!

Sure, it won’t stay as a daemon, but it starts and it syncs, which is great.

until this happens
beam.smp: snappy.cc:404: char* snappy::internal::CompressFragment(const char*, size_t, char*, snappy::uint16*, int): Assertion `static_cast(kuint32max >> shift) == table_size - 1’ failed.

and then i can’t restart it until I delete mnesia folder


You could try setting this in the epoch.yaml (or equivalent):

  db_backend: mnesia

This will cause all the data to be ram (+disk) resident, but removes the rocksdb+snappy functionality. It was merged into master only 9 days ago, so you might have to update first.


yeah sure I can try that. - edit: running it right now

I found if I set it to “false” in the field that says persistent it doesn’t fail. but sure it starts from zero next time.

  • edit: I love the “bin/epoch console” command, is my favorite so far


Hey, that works!

It used to be that i could not restart the node if it failed, but now, it totally can be stopped and restarted and it continues the blockchain.

This is amazing.

Mmm, I didn’t update… it still worked though

Merge: 6a1ecbf7 b6f9f776
Date: Thu Dec 6 17:40:50 2018 +0100

I will update now