Code Monkey home page Code Monkey logo

trusteewallet's Introduction

Trustee Wallet

Trustee Wallet is the secure and simple way to create and manage crypto accounts. Quick and safe buy and sell bitcoin directly with your Visa or MasterCard

Building for Android

All building steps are tested with Ubuntu 16.04

Build Dependencies

For successful build it's reqired to have build tools installed

sudo apt-get install build-essential

nodejs version 10.x

curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install nodejs

and openjdk-8

sudo apt-get install openjdk-8-jdk
echo "JAVA_HOME=$(which java)" | sudo tee -a /etc/environment
source /etc/environment

System preparation

For successful build it's need to increase the number of files that OS can monitor

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

Prepare folder and licence for Android SDK

mkdir ~/androidsdk
export ANDROID_HOME=~/androidsdk

mkdir ~/androidsdk/licenses 
echo "24333f8a63b6825ea9c5514f83c2829b004d1fee" >  ~/androidsdk/licenses/android-sdk-license

Please note: by creating ~/androidsdk/licenses/android-sdk-license file you are accepting Android SDK licence.

Android build

Download code from Github

git clone https://github.com/trustee-wallet/trusteeWallet.git

Build preparation

cd ./trusteeWallet
npm install
npx jetifier
rm -f shim.js
./node_modules/.bin/rn-nodeify --hack --install

Building APK

cd ./android
./gradlew assembleRelease

After successful build APK file app-release.apk can be found in ./app/build/outputs/apk/release/

Android verifiable builds

Using these steps anyone can verify the latest release of application TrusteeWallet that we distribute via Google Play built from code in this repository. Does not contain any hidden functions or any malicious code.

Please Note: Google Play after deploying built packages making modifications with it. Adding own metadata, digital signs to code etc. Also there is some data that is changing from build-to-build and can't be the same: like build id. As a result builds can't be 100% fully identical. Files always will have minor differences that are not affecting application functionality.

The script verify_android_build.sh starting build of the Docker container from ./docker/Dockerfile.verifyandroidbuild file.
Building steps getting TrusteeWallet code from this repository, configuring it with parameters from verify_android_build.sh script and starting build of universal APK file.
After successful build it's downloading from Google Play a similar universal APK file.
On the next step we decoding both APK files by apktool. File downloaded from Google Play to folder fromGoogle and file just built from sources to folder fromBuild.
Finally on the last step using simple diff command we checking both folders for differences.

git clone https://github.com/trustee-wallet/trusteeWallet.git
cd ./trusteeWallet
./docker/verify_android_build.sh

There is an example how result may look like and how to analyze the result.

Step 10/10 : RUN diff --recursive --brief fromBuild fromGoogle
 ---> Running in a3154b35a34f
+Files fromBuild/AndroidManifest.xml and fromGoogle/AndroidManifest.xml differ
+Files fromBuild/apktool.yml and fromGoogle/apktool.yml differ
!Files fromBuild/assets/crashlytics-build.properties and fromGoogle/assets/crashlytics-build.properties differ
!Files fromBuild/assets/index.android.bundle and fromGoogle/assets/index.android.bundle differ
+Files fromBuild/original/AndroidManifest.xml and fromGoogle/original/AndroidManifest.xml differ
+Only in fromGoogle/original/META-INF: BNDLTOOL.RSA
+Only in fromGoogle/original/META-INF: BNDLTOOL.SF
+Files fromBuild/original/META-INF/MANIFEST.MF and fromGoogle/original/META-INF/MANIFEST.MF differ
!Files fromBuild/res/values/strings.xml and fromGoogle/res/values/strings.xml differ
!Files fromBuild/smali_classes2/com/koushikdutta/async/http/body/MultipartFormDataBody$6.smali and fromGoogle/smali_classes2/com/koushikdutta/async/http/body/MultipartFormDataBody$6.smali differ
!Files fromBuild/smali_classes3/okhttp3/RealCall$AsyncCall.smali and fromGoogle/smali_classes3/okhttp3/RealCall$AsyncCall.smali differ
!Files fromBuild/smali_classes3/okhttp3/internal/cache/DiskLruCache$2.smali and fromGoogle/smali_classes3/okhttp3/internal/cache/DiskLruCache$2.smali differ
+Only in fromGoogle/unknown: stamp-cert-sha256
The command '/bin/sh -c diff --recursive --brief fromBuild fromGoogle' returned a non-zero code: 1

We can ignore differences in files marked by green color they have metadata changes made by Google, digital signs etc. which are not affecting the application itself.
File apktool.yml contains metadata from apktool from the previous step used to decode APK files and is not related to builds in any way.

Files marked by orange may require more detailed analysis to make sure there are no changes in binaries.
To do it, let's find just built docker image id and run container with it.

docker images
docker run -i -t <ID>

To get detailed data about what exactly is different in files just run inside the container diff command with the path to files that we want to compare.

diff <path to file1> <path to file2>

In this example in both files differences related to changed build ID.

root@37c6000f7ee9:/trustee# diff fromBuild/assets/crashlytics-build.properties fromGoogle/assets/crashlytics-build.properties
6c6
< #Tue Oct 27 14:57:43 GMT 2020
---
> #Tue Oct 27 07:20:06 GMT 2020
9c9
< build_id=ec2f73f5-d473-4cb0-94fe-701f996ce221
---
> build_id=743f6302-4068-4a5a-9e5d-014d02bd6693
root@37c6000f7ee9:/trustee# diff fromBuild/res/values/strings.xml fromGoogle/res/values/strings.xml
70c70
<     <string name="com.crashlytics.android.build_id">ec2f73f5-d473-4cb0-94fe-701f996ce221</string>
---
>     <string name="com.crashlytics.android.build_id">743f6302-4068-4a5a-9e5d-014d02bd6693</string>

The rest of files referring to smali_classes* seems have some sort of decompilation artefacts.

root@37c6000f7ee9:/trustee# diff 'fromBuild/smali_classes3/okhttp3/RealCall$AsyncCall.smali' 'fromGoogle/smali_classes3/okhttp3/RealCall$AsyncCall.smali'
29,32c29
<     .locals 1
<
<     .line 154
<     const-class v0, Lokhttp3/RealCall;
---
>     .locals 0
root@37c6000f7ee9:/trustee# diff 'fromBuild/smali_classes3/okhttp3/internal/cache/DiskLruCache$2.smali' 'fromGoogle/smali_classes3/okhttp3/internal/cache/DiskLruCach$2.smali'
27,30c27
<     .locals 1
<
<     .line 316
<     const-class v0, Lokhttp3/internal/cache/DiskLruCache;
---
>     .locals 0

As we can see there are no significant differences between APK file downloaded from Google Play and file built from source code. So we can say there are no hidden functions that may harm users.

Please note: This verification method can be used only for the latest TrusteeWallet release. Because most of the third part packages that we use are also in active development and if we try to build some of the previous releases with latest packages versions there will be significant differences in APK files.

Contacts

For proposals and bug reports feel free to open and issue HERE

If you have any questions please contact us by email [email protected] or join our community in Telegram

trusteewallet's People

Contributors

alexhladin avatar belyokhin avatar irynagrusha avatar newcodepusher avatar re11oy avatar rhrusha avatar rhrusha1test avatar roman-popil avatar shchipskiiyura avatar sudoryan avatar turtus avatar vfedushchin avatar vkhomiuk avatar yuliknight avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

trusteewallet's Issues

#UX История транзакций, "Показать еще"

Возможно ли сделать непрерывный скролинг без необходимости нажимать "Показать еще"? Это очень неудобно, кода много транзакций и нужно быстро добраться до более старых.

photo_2020-03-18_18-46-01

#UX Стилистика и элементы

Предлагаю удалить надписи и иконки "копировать" там где это и так интуитивно понятно.
Зачем нужны надпись и иконка "Копировать", если функция копирования работает при тапе по адресу? При этом, это же реализованно без надписи и иконки в разделе "Получить" (в бета версии)
photo_2020-03-18_17-36-08
... При необходимости скопировать адрес юзер интуитивно будет пробовать сделать это тапом по адресу, это стандартная попытка выделения и копирования. Если есть надпись "Копировать" то юзер будет целиться в нее, что не хорошо и не плохо... При этом это режет глаз выбиваясь из стиля, так как в других местах это реализованно без надписей и иконок.

Обмен

  1. В при обмене не видно баланс выбранного актива к обмену.
  2. Добавить возможность при обмене указать всю сумму имеющуюся на балансе.

QR-код

Просьба добавить возможность выбирать QR-код также из галереи

Security issue

I find it low security for the Backup phrase, it doesn't have a password protection or FP unlock, it's just wide open. Let's say I have an access to the victim's phone who didn't set any PIN or whatever on the phone, many people just hesitate it or if I found out the PIN to Trustee Wallet then I can easily open the wallet and silently copy the Recovery phrase and later use it on my device to get access to the victim's funds.

It may sound a difficult process but not so much, the point of this that Backup phrase after it was extracted has to be protected with a password or FP as a must requirement. Something like this exists in Coinomi wallet for a long time, and if it wasn't important they wouldn't have implemented it at first place.

Единицы измерения комиссии Bitcoin

Перейдите на измерение комиссии в sat/vB, или хотябы в случае использования bc1. Сейчас, если доверится Trustee, платится завышенная комиссия и расхождение около 20% от mempool.space.

Please provide verifiable builds

I tried to build your wallet but failed. Could you look into the issues found and make it easier to reproduce your release builds? Above link has an in detail description of what I tried. For deterministic builds it is usually best to work with docker containers, so that as little parameters as possible are left to random chance.

Реферальная ссылка

Хотелось бы при распространении реферальной ссылки, видеть какое-то превью проекта в виде логотипа например.

Missing lockfile package-lock.json or yarn.lock

The repo doesn't contain a lockfile such as package-lock.json (when npm used) or yarn.lock (when yarn used) files, which enable reproducible-builds as the same versions can be used when rebuilding the app by using npm ci command which currently fail with error.

fix: include lockfile in the repo, and ensure app compilation work when npm ci or yarn install --frozen-lockfile is used to install deps (needed for reproducible deps installation), see related issue #96

Интеграция токена GOLD из Erachain + BTC, USD и других

Здравствуйте

Можно сделать интеграцию в ваш кошелек нашей блокчейн платформы?
Внутри у нас уже есть биржа децентрализованная.

Мы могли бы вас для нашего сообщества так же рекомендовать как сервис ввода вывода в фиат

пример мобилки есть тут https://erachain.org/home-download
Наша мобилка написана на TS

Есть описание API для создания транзакций на стороне клиента:
https://app.swaggerhub.com/apis-docs/Erachain/era-api/

Токенизация всего

Так же после интеграции можно будет любые токены из нашей платформы вставлять в ваш кошелек. Мы планируем запустить токены на разные валюты и нефть.
Возможно токенизировать вообще что угодно

Бот трейдер

Так же у нас есть внешний торговый бот, который написан на Java и его можно настравивать на разные схемы работы - https://github.com/erachain/dex-trader. Он работает в связке с локальной блокчейн-нодой.

Can't run your app

I tried to build and install your application, but I had next errors:

  1. webview import
    errors
    but as I could see WebView was import correctly from react-native-webview, I didnt understand what was wrong
  2. problem with moduleName "TrusteeWallet"

Could you help me to correct that? Thanks

The wallet double-spent an input, making a sent transaction invalid

Could you please check this scenario if it still relevant?

bitcoin-dot-org/Bitcoin.org#3514 (comment)

"I sent a transaction from the wallet to an address. Later that day I sent another transaction to the same address (while the first transaction was still unconfirmed). The second transaction re-used a txo from the first transaction, cancelling the first transaction (RBF). The recipient only received one payment, not the required two payments."

Coins, Tokens (ERC-20, TRC-20)

Сейчас все идет одним списком. Разграничьте их по отдельным вкладкам (Coins, ERC-20, TRC-20)
ИМХО: удобнее будет

Инфо о всех комиссиях Продажи

В деталях продажи отображается информация лишь о комиссии транзакции. Где взять данные о комиссиях сервисов после проведения продажи?
Я знаю, что они есть на стадии формирования продажи. Нужна возможность видеть это в деталях, после продажи. Я правильно понимаю, что эти комиссии вычитается из баланса кошелька и никак не отражаются в цифрах самой транзакции?

Работа сканирования балансов

telegram-cloud-photo-size-2-5463001541142229009-y

Как это работает и почему такая задержка в сравнении с настройкой?
На данный момент Trustee очень неудобен в этом вопросе.

Новая покупка, отображение кнопки "оплатить"

Успешно совершена покупка, но при этом в раскрытом блоке транзакции отображается кнопка "оплатить". Сбивает с толку. При попытке оплатить, система говорит об успехе и созданном ордере. Так зачем же показывать "оплатить"? Другое дело если транзакция реально не оплачена.
photo_2020-03-18_18-20-20

Font issues

Needs some font fixes between languages selection it has upper and lower case letters shown differently and orthography like spaces.

photo_2020-02-04_17-39-08 (2)
photo_2020-02-04_17-39-08
photo_2020-02-04_17-39-35 (2)
photo_2020-02-04_17-39-35

#UX Идеи: Dashboard

photo_2020-03-24_23-02-09

photo_2020-03-24_23-02-10

По-горизонтальному свайпу конкретного актива получать доступ к быстрым функциям. Это исключает необходимость отдельного выбора актива при использовании обмена и покупки/продажи, что ускоряет и упрощает процесс и схоже с уже реализованным быстрым доступом внутри функции "Отправить" конкретного актива. Имхо - более интуитивный UX.

Функции "добавить актив, сканер QR, настройки" и прочие дополнительные опции расположены в контекстном меню вызываемом тапом по иконке в нижней части экрана (описание в issue #22).

Пожелание

Добавить новостную ленту в кошелёк , (крипто новости или новости непосредственно самого кошелька/обновления)

Git tag new releases & update master branch

The latest tag is "v1.40.639" from "Nov 9, 2020" https://github.com/trustee-wallet/trusteeWallet/releases/tag/v1.40.639
while the latest release on google-play is: 1.40.799 from March 30, 2021 https://play.google.com/store/apps/details?id=com.trusteewallet
Please tag new releases, so each tag will point to the related commit of the release.
This is needed for reproducible-builds, see related issue: #1
also the code in default branch master is old, last updated "Dec 18, 2020" https://github.com/trustee-wallet/trusteeWallet/branches

Как изменить названия созданных кошельков?

Создал несколько кошельков которым были присвоены имена по умолчанию: Trustee wallet 1 и Trustee wallet 2. Кроме того, что при создании не было предложения дать имя, теперь я его не могу изменить.

После тщательно просмотрев интерфейс обнаружил в левом верхнем углу иконку... Да эта иконка серьезное испытание. Но это не решает проблему уже созданного кошелька.

Ошибка при запуске приложения на ios

Вытащил приложение, установил зависимости, автоматом выполнились jetify и nodify, зашел в директорию ios, выполнил pod install. после чего выполнил react-native run-ios и в результате получил билд отвалился с ошибкой

error: Could not get GOOGLE_APP_ID in Google Services file from build environment

macos: Catalina 10.15.3
node: v10.15.3
npm: 6.4.1

#UX Идеи: скролинг Истории транзакций и анимация кнопок Отправить/Получить

photo_2020-03-18_22-58-01 (2)
В Issue 19 https://github.com/trustee-wallet/trusteeWallet/issues/19#issue-584013378 описал расположение истории и кнопок и на идее этого UX предлагаю:

  • При скролинге истории транзакций "сворачивать" кнопки со смещением уменьшая их размер (анимация) .

  • Как вариант с полным исчезновением.

  • Если бы История транзакций при скроле не скрывала все элементы (баланс, адрес и т.д), а
    "подныривала" под них, то идея с анимацией кнопок кажется хорошей.

Пример gif:
animation

Добавление монеты Reddcoin

Добрый день, очень понравился ваш кошелёк, очень удобный и простой в использовании. Хочу спросить, не хотели бы вы добавить ещё одну монетку "reddcoin"? На мой взгляд перспективная крипта, торгую ей с 2017 года.
Заранее спасибо 😉

Быстрый доступ к выбору кошельков

С учетом возможности иметь более одного кошелька имеется потребность быстрого/удобного доступа к выбору кошельков. Сейчас это реализованно через настройки, переход требует выполнения двух шагов, что не очень удобно.

Предлагаю упростить доступ к выбору кошельков сократив до одного шага. Простое решение: тап по балансу(общий дашборд) текущего кошелька, механика схожа с переходом в актив.

Problems with build caused by duplicate directories with same name but with different letter cases

It appears that there are duplicate folders in app/ subdirectory:
/app/routes <=> /app/Routes, /app/appstores <=> /app/AppStores
On my linux system it caused build to fail. Executing something like this fixes it, though:

cd app
mv routes/* Routes/
mv appstores/* AppStores/
rm -r routes appstores
cd ..
find . -type f -iname '*tsx' |grep -v node_modul | xargs sed -i 's/appstores\//AppStores\//g'
find . -type f -iname '*js' |grep -v node_modul | xargs sed -i 's/app\/appstores\//app\/AppStores\//g'
find . -type f -iname '*ts' |grep -v node_modul | xargs sed -i 's/app\/appstores\//app\/AppStores\//g'
cd app
find . -type f -iname '*ts' | xargs sed -i 's/appstores\//AppStores\//g'
find . -type f -iname '*js' | xargs sed -i 's/appstores\//AppStores\//g'

#UI История транзакций

Какую цель преследуют элементы выделенные на скрине? :
photo_2020-03-18_17-40-11
Зачем это украшение? Элементы сильно отвлекают, занимают место, делают дизайн грязным. Ведь "история транзакций" это бухгалтерия, здесь важны сухие данные.
Итак, у нас уже есть информация: "Входящая, исходящая, или покупка, продажа", рядом с каждым числом имеем оператор + , или - . Этого более чем достаточно для понимания о типе действий с балансом кошелька. Лишние элементы лишь отвлекают.

Move devDependencies that required to compile the app to dependencies

rn-nodeify used in build instructions:
https://github.com/trustee-wallet/trusteeWallet#android-build
and in postinstall:

"postinstall": "npx jetifier && ./node_modules/.bin/rn-nodeify --hack --install && patch-package",

is in devDependencies instead of dependencies:
"rn-nodeify": "github:tradle/rn-nodeify",

ensure all dependencies used to compile the android & ios version are in dependencies, and compilation work when NODE_ENV="production" environment variable is used.

Набор активов для разных кошельков

При пользовании несколькими кошельками во всех отображается один и тот же набор активов. Причем в разных кошельках разные активы, но отображаются все!, просто отсутствующие с нулевым балансом.

1AFE5691-0C3E-4F17-BD15-2123BBBC372E

Предлагаю разделять активы, уникальность наборов для каждого кошелька.

Пожелание

#пожелание @cryptoceo давайте сделаем актив(в который раз в месяц все кто в комьюнити будут скидовать кому сколько не жалко монет той или иной крипты, для стимулирования развитие и крипто дискуссии по проекту

Не точное отображение сумм в "истории транзакций"

Показана сумма 0.0861, при этом точная 0.08609800. Такое округление сбивает с толку, получается бухгалтерия с погрешностью, если смотреть на отображаемые числа. Лучше ничего не округлять, просто сокращать количество отображаемых чисел.
https://blockchair.com/bitcoin/transaction/644b5d709a058a3b848623b80d13887bb34ff78b367b24877fb349f8a893a5f5

photo_2020-03-18_16-31-01

[Feature Suggestion] Add wallet list on homescreen (and delete wallet)

Currently, the list of wallets is only available in settings screen which is confusing. I think adding all the wallets on home screen would be a good feature to add. What do yo think?

Also, there is no way to delete the wallet. It will be great to add that feature as well.

Thanks!

#UX Идеи: концепт контекстного меню v.2

В issue 19 первая версия концепта.

photo_2020-03-21_13-06-37

Идея перенести блок шапки (header) в подвал (footer) - это решает вопрос удобства управления на больших диагоналях, элементы находятся в пределах досягаемости большого пальца руки.

Контекстное меню может содержать несколько подписанных разделов, например историю адресов которые пользователь уже использовал, доступ к блокчейн обозревателю, что в данном концепте явно из-за наличия подписи к разделам и т.д.

Возврат к панели актива, скрытие контекстного меню, удобно из-за практичного расположения элемента закрытия.

(Так же перемещаем кнопки Отправить/Получить над историей транзакций. При этом высоту блока истории транзакций уменьшаем, делая лишь очевидным его наличие, что дает удобство расположения кнопок Отправить/Получить и более чистый интерфейс. )

#UX Идеи: кнопки Отправить/Получить и контекстное меню

photo_2020-03-18_22-58-01

  • Картинка 1. Расположить кнопки Отправить/Получить непосредственно над историей транзакций так, чтобы на больших диагоналях они располагались как раз в зоне комфортной досягаемости большого пальца. Историю транзакций опустить в нижнюю треть экрана. Так интерфейс будет выглядеть чисто и удобно управлять основными функциями.

  • Картинка 2. На месте текущей иконки "B" расположить элемент вызывающий контекстное меню с дополнительными функциями (переход в обозреватель текущего адреса и т.д) и настройками.

#UX Отображение истории

Предлагаю не дублировать одни и те же числа, а просто отображать блок "Продажа". При этом подробности, в том числе и данные исходящей транзакции, показывать в развернутой информации. Иначе дубли цифр сбивают с толку, путают юзеров.

photo_2020-03-18_16-58-40

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.