From 0a5359afa5e4dcd58b4a3a5cc9a08e9a9233588d Mon Sep 17 00:00:00 2001 From: Michael Ira Krufky Date: Sun, 26 Aug 2018 00:10:49 -0400 Subject: [PATCH] Add support for EOS Classic (EOSC) EIP-155 is now properly working with EOS-Classic!! Tested personally on the Ledger Nano S homepage : https://eos-classic.io block explorer : https://explorer.eos-classic.io network statistics : https://stats.eos-classic.io slip0044 index : 2018 chainId : 20 Proof of EIP-155 in genesis block: https://github.com/eosclassic/eosclassic/blob/master/params/config.go#L63 cc: @eosclassic --- Makefile | 8 ++++++-- blue_app_eosclassic.gif | Bin 0 -> 345 bytes eosclassic.png | Bin 0 -> 5746 bytes glyphs/blue_badge_eosclassic.gif | Bin 0 -> 430 bytes glyphs/nanos_badge_eosclassic.gif | Bin 0 -> 65 bytes nanos_app_eosclassic.gif | Bin 0 -> 72 bytes src_genericwallet/chainConfig.h | 3 ++- src_genericwallet/main.c | 6 ++++++ src_genericwallet/tokens.c | 2 ++ src_genericwallet/tokens.h | 2 ++ 10 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 blue_app_eosclassic.gif create mode 100644 eosclassic.png create mode 100644 glyphs/blue_badge_eosclassic.gif create mode 100644 glyphs/nanos_badge_eosclassic.gif create mode 100644 nanos_app_eosclassic.gif diff --git a/Makefile b/Makefile index e878102..553ab70 100755 --- a/Makefile +++ b/Makefile @@ -110,9 +110,13 @@ else ifeq ($(CHAIN),atheios) APP_LOAD_PARAMS += --path "44'/1620'" DEFINES += CHAINID_UPCASE=\"ATHEIOS\" CHAINID_COINNAME=\"ATH\" CHAIN_KIND=CHAIN_KIND_ATHEIOS CHAIN_ID=1620 APPNAME = "Atheios" +else ifeq ($(CHAIN),eosclassic) +APP_LOAD_PARAMS += --path "44'/2018'" +DEFINES += CHAINID_UPCASE=\"EOSCLASSIC\" CHAINID_COINNAME=\"EOSC\" CHAIN_KIND=CHAIN_KIND_EOSCLASSIC CHAIN_ID=20 +APPNAME = "EOSClassic" else ifeq ($(filter clean,$(MAKECMDGOALS)),) -$(error Unsupported CHAIN - use ethereum, ethereum_classic, expanse, poa, rsk, rsk_testnet, ubiq, wanchain, kusd, musicoin, callisto, ethersocial, ellaism, pirl, akroma, ether1, ethergem) +$(error Unsupported CHAIN - use ethereum, ethereum_classic, expanse, poa, rsk, rsk_testnet, ubiq, wanchain, kusd, musicoin, callisto, ethersocial, ellaism, pirl, akroma, ether1, ethergem, atheios, eosclassic) endif endif @@ -204,4 +208,4 @@ include $(BOLOS_SDK)/Makefile.rules dep/%.d: %.c Makefile.genericwallet listvariants: - @echo VARIANTS CHAIN ethereum ethereum_classic expanse poa rsk rsk_testnet ubiq wanchain kusd #musicoin callisto ethersocial ellaism pirl akroma ether1 ethergem + @echo VARIANTS CHAIN ethereum ethereum_classic expanse poa rsk rsk_testnet ubiq wanchain kusd #musicoin callisto ethersocial ellaism pirl akroma ether1 ethergem atheios eosclassic diff --git a/blue_app_eosclassic.gif b/blue_app_eosclassic.gif new file mode 100644 index 0000000000000000000000000000000000000000..d34bd90d366936408a024882f8a2dbd389445f96 GIT binary patch literal 345 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 Yv~LHK=%BU;m&1q^19>r+h2jDLJB!-L$N&HU literal 0 HcmV?d00001 diff --git a/glyphs/nanos_badge_eosclassic.gif b/glyphs/nanos_badge_eosclassic.gif new file mode 100644 index 0000000000000000000000000000000000000000..03797f045d319b555b77d4455c670b1eee28c4fd GIT binary patch literal 65 zcmZ?wbh9u|kdN{_TZJEq az2z2DxHg7bls*%?no@Od%MoQ(25SHVt{AWY literal 0 HcmV?d00001 diff --git a/src_genericwallet/chainConfig.h b/src_genericwallet/chainConfig.h index 79c1636..26dbe0e 100644 --- a/src_genericwallet/chainConfig.h +++ b/src_genericwallet/chainConfig.h @@ -21,7 +21,8 @@ typedef enum chain_kind_e { CHAIN_KIND_ELLAISM, CHAIN_KIND_ETHER1, CHAIN_KIND_ETHERGEM, - CHAIN_KIND_ATHEIOS + CHAIN_KIND_ATHEIOS, + CHAIN_KIND_EOSCLASSIC } chain_kind_t; typedef struct chain_config_s { diff --git a/src_genericwallet/main.c b/src_genericwallet/main.c index 132903a..0c86c06 100644 --- a/src_genericwallet/main.c +++ b/src_genericwallet/main.c @@ -1561,6 +1561,9 @@ tokenDefinition_t* getKnownToken() { case CHAIN_KIND_ATHEIOS: numTokens = NUM_TOKENS_ATHEIOS; break; + case CHAIN_KIND_EOSCLASSIC: + numTokens = NUM_TOKENS_EOSCLASSIC; + break; } for (i=0; ikind) { @@ -1615,6 +1618,9 @@ tokenDefinition_t* getKnownToken() { case CHAIN_KIND_ATHEIOS: currentToken = PIC(&TOKENS_ATHEIOS[i]); break; + case CHAIN_KIND_EOSCLASSIC: + currentToken = PIC(&TOKENS_EOSCLASSIC[i]); + break; } if (os_memcmp(currentToken->address, tmpContent.txContent.destination, 20) == 0) { return currentToken; diff --git a/src_genericwallet/tokens.c b/src_genericwallet/tokens.c index c9a898a..2ae1e62 100644 --- a/src_genericwallet/tokens.c +++ b/src_genericwallet/tokens.c @@ -737,3 +737,5 @@ const tokenDefinition_t const TOKENS_CALLISTO[NUM_TOKENS_CALLISTO] = {}; const tokenDefinition_t const TOKENS_ETHERGEM[NUM_TOKENS_ETHERGEM] = {}; const tokenDefinition_t const TOKENS_ATHEIOS[NUM_TOKENS_ATHEIOS] = {}; + +const tokenDefinition_t const TOKENS_EOSCLASSIC[NUM_TOKENS_EOSCLASSIC] = {}; diff --git a/src_genericwallet/tokens.h b/src_genericwallet/tokens.h index 6ab3082..c8d3518 100644 --- a/src_genericwallet/tokens.h +++ b/src_genericwallet/tokens.h @@ -40,6 +40,7 @@ typedef struct tokenDefinition_t { #define NUM_TOKENS_CALLISTO 0 #define NUM_TOKENS_ETHERGEM 0 #define NUM_TOKENS_ATHEIOS 0 +#define NUM_TOKENS_EOSCLASSIC 0 extern tokenDefinition_t const TOKENS_AKROMA[NUM_TOKENS_AKROMA]; extern tokenDefinition_t const TOKENS_ELLAISM[NUM_TOKENS_ELLAISM]; @@ -58,3 +59,4 @@ extern tokenDefinition_t const TOKENS_MUSICOIN[NUM_TOKENS_MUSICOIN]; extern tokenDefinition_t const TOKENS_CALLISTO[NUM_TOKENS_CALLISTO]; extern tokenDefinition_t const TOKENS_ETHERGEM[NUM_TOKENS_ETHERGEM]; extern tokenDefinition_t const TOKENS_ATHEIOS[NUM_TOKENS_ATHEIOS]; +extern tokenDefinition_t const TOKENS_EOSCLASSIC[NUM_TOKENS_EOSCLASSIC];