i1skn / ironbelly Goto Github PK
View Code? Open in Web Editor NEWGrin 📱wallet you've deserved
Home Page: https://ironbelly.app
License: Apache License 2.0
Grin 📱wallet you've deserved
Home Page: https://ironbelly.app
License: Apache License 2.0
I hope ironbelly only have android and iPhone devices.
Instead of password
See here https://imgur.com/a/9ZtQXKg
iOS 13, iPhone XS
We can use dictionary to check is there a typo in any of the words entered and show it to the user.
During the initialization of the new wallet - user enter 24 words (paper key) manually. This approach has one big advantage - 100% sure that the user has correctly wrote down paper key. But it also has some disadvantages:
The research is needed on how can we mitigate these disadvantages and still be "very" sure, that the user has correctly wrote down paper key.
from Calin Pasat:
Wanted to suggest maybe being required additionaly to scan Face
ID/require to type password when accesing the Paper Key in Settings as
an added security measure in case somebody malicious grabs your phone
after you first initial unlock of the wallet!
If user enters amount in Grin equivalent to $100 or more - show some reasonable message, that the software is still in beta phase and people should exercise caution.
the core rust code being used is still 1.0.1 but 1.0.2 has been available for some time
It should not allow opening a slate file if the wallet is not initialised
USD, EUR, BTC etc
Followed the steps to build the iOS version using the latest XCode. Getting a build error:
Undefined symbols for architecture arm64:
"google::LogMessage::LogMessage(char const*, int, int)", referenced from:
facebook::react::CxxNativeModule::invoke(unsigned int, folly::dynamic&&, int)::$_1::operator()() const in CxxNativeModule.o
facebook::react::JSException::buildMessage(OpaqueJSContext const*, OpaqueJSValue const*, OpaqueJSString*, char const*) in JSCHelpers.o
facebook::react::NativeToJsBridge::callFunction(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&&, folly::dynamic&&)::$_1::operator()(facebook::react::JSExecutor*) const in NativeToJsBridge.o
facebook::react::NativeToJsBridge::invokeCallback(double, folly::dynamic&&)::$_2::operator()(facebook::react::JSExecutor*) const in NativeToJsBridge.o
"double_conversion::DoubleToStringConverter::ToShortestIeeeNumber(double, double_conversion::StringBuilder*, double_conversion::DoubleToStringConverter::DtoaMode) const", referenced from:
double_conversion::DoubleToStringConverter::ToShortest(double, double_conversion::StringBuilder*) const in CxxNativeModule.o
"double_conversion::DoubleToStringConverter::ToFixed(double, int, double_conversion::StringBuilder*) const", referenced from:
std::__1::enable_if<(std::is_floating_point<double>::value) && (IsSomeString<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::value), void>::type folly::toAppend<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, double>(double, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*, double_conversion::DoubleToStringConverter::DtoaMode, unsigned int) in CxxNativeModule.o
std::__1::enable_if<(std::is_floating_point<double>::value) && (IsSomeString<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::value), void>::type folly::toAppend<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, double>(double, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*, double_conversion::DoubleToStringConverter::DtoaMode, unsigned int) in JSCExecutor.o
std::__1::enable_if<(std::is_floating_point<double>::value) && (IsSomeString<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::value), void>::type folly::toAppend<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, double>(double, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*, double_conversion::DoubleToStringConverter::DtoaMode, unsigned int) in MethodCall.o
std::__1::enable_if<(std::is_floating_point<double>::value) && (IsSomeString<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::value), void>::type folly::toAppend<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, double>(double, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*, double_conversion::DoubleToStringConverter::DtoaMode, unsigned int) in Value.o
"double_conversion::DoubleToStringConverter::ToPrecision(double, int, double_conversion::StringBuilder*) const", referenced from:
std::__1::enable_if<(std::is_floating_point<double>::value) && (IsSomeString<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::value), void>::type folly::toAppend<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, double>(double, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*, double_conversion::DoubleToStringConverter::DtoaMode, unsigned int) in CxxNativeModule.o
std::__1::enable_if<(std::is_floating_point<double>::value) && (IsSomeString<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::value), void>::type folly::toAppend<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, double>(double, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*, double_conversion::DoubleToStringConverter::DtoaMode, unsigned int) in JSCExecutor.o
std::__1::enable_if<(std::is_floating_point<double>::value) && (IsSomeString<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::value), void>::type folly::toAppend<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, double>(double, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*, double_conversion::DoubleToStringConverter::DtoaMode, unsigned int) in MethodCall.o
std::__1::enable_if<(std::is_floating_point<double>::value) && (IsSomeString<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::value), void>::type folly::toAppend<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, double>(double, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*, double_conversion::DoubleToStringConverter::DtoaMode, unsigned int) in Value.o
"google::LogMessageFatal::LogMessageFatal(char const*, int)", referenced from:
std::__1::enable_if<(std::is_floating_point<double>::value) && (IsSomeString<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::value), void>::type folly::toAppend<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, double>(double, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*, double_conversion::DoubleToStringConverter::DtoaMode, unsigned int) in CxxNativeModule.o
facebook::react::Instance::initializeBridge(std::__1::unique_ptr<facebook::react::InstanceCallback, std::__1::default_delete<facebook::react::InstanceCallback> >, std::__1::shared_ptr<facebook::react::JSExecutorFactory>, std::__1::shared_ptr<facebook::react::MessageQueueThread>, std::__1::shared_ptr<facebook::react::ModuleRegistry>) in Instance.o
facebook::react::JSBigFileString::fromPath(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)::$_0::operator()() const in JSBigString.o
facebook::react::JSBigFileString::c_str() const in JSBigString.o
facebook::react::JSCExecutor::~JSCExecutor() in JSCExecutor.o
facebook::react::JSCExecutor::callNativeModules(facebook::react::Value&&) in JSCExecutor.o
std::__1::enable_if<(std::is_floating_point<double>::value) && (IsSomeString<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::value), void>::type folly::toAppend<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, double>(double, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*, double_conversion::DoubleToStringConverter::DtoaMode, unsigned int) in JSCExecutor.o
it seems this issue has been resolved in React Native, please see facebook/react-native#23390
Would be nice to support dark mode in UI
User should be able to choose between Floonet
and Mainnet
in Settings with ability to set her own node.
I try to import my transaction file on Android 10 OnePlus 6 but I see that the screen shows an error message with red background for about...80ms and then it is gone. I cannot read. Screen recording is not possible because deactivated. Help debug. WTF.
Same as the core wallet
From a customer:
When you chose to destroy the wallet in the app, and attempt to create new one WITHOUT closing the app you get an error that seed file already exist and some long line which is probably some raw address to file on my iphone. When you start the app again the old wallet is still there and not destoryed. To destroy the wallet successfully you need to close the app after using the destroy button.
Ironbelly currently supports the traditional crypto wallet. We need to move on the further level to support the multisignature wallet. Initially, come up with 2/3 multisig. @i1skn Please review this based on the grin support.
App needs a new logo. App icon and the launch screen should be updated.
I have faced the following error while trying to build the project. After I run 'cargo lipo --release'.
[INFO cargo_lipo::meta] Will build universal library for ["ironbelly-wallet"] [INFO cargo_lipo::lipo] Building "ironbelly-wallet" for "aarch64-apple-ios" error: failed to run
rustc` to learn about target-specific information
Caused by:
process didn't exit successfully: rustc - --crate-name ___ --print=file-names --target aarch64-apple-ios --crate-type bin --crate-type rlib --crate-type dylib --crate-type cdylib --crate-type staticlib --crate-type proc-macro
(exit code: 1)
--- stderr
error: Error loading target specification: Could not find specification for target "aarch64-apple-ios"
|
= help: Use --print target-list
for a list of built-in targets
[ERROR cargo_lipo] Failed to build "ironbelly-wallet" for "aarch64-apple-ios": Executing "/Users/irshadpc/.rustup/toolchains/stable-x86_64-apple-darwin/bin/cargo" "--color" "auto" "build" "-p" "ironbelly-wallet" "--target" "aarch64-apple-ios" "--lib" finished with error status: exit code: 101`
When I go to the transition details suddenly app crashed. @i1skn Any idea why it behaves like that.
Sent with GitHawk
The app does not use user location, but App Store still requires to provide NSLocationAlwaysAndWhenInUseUsageDescription. This should be fixed.
Initial guess: one of the modules references the Core Location
framework and that's why App Store requires to provide this message. If we can identify this module and remove the reference to the Core Location
framework, we would be able to remove the message as well.
File sharing seems finicky on mobile devices. Furthermore, some chat apps (in particular some privacy apps) make file sharing even more difficult. It would be very nice to be able to copy/paste TX slates to/from IronBelly.
For robustness slates could be base64 encoded with a checksum (to protect against typos / paste errors)
When creating a transaction, there is an option to add a memo, but this memo is not viewable after the transaction has been finalized (not viewable by sender or receiver). It would be nice to remember and display the memo in the TX list.
I am using IronBelly 2.2.0 build11 on Android 10.
It should be possible to remove transactions after they have been mined/sent to a node.
Assumption: somehow during the password check we are relying to the connection with a node.
@i1skn There is no way to change the password, right now we need to destroy and wallet and backup with seeds.
Currently e2e tests on travis are failing, this needs to be fixed.
I get "Json parse error..." error msg when importing tx.response file. I think it works after I close the app, rename tx.response file to eg tx123.response and try again. Is there some cache of old .response files which causes some conflict?
Pixel 3a, android 10.
Currently, we show elapsed time in the transactionlist. This is convinient for recent transactions (1h ago, 5h ago), but not convinient for the older ones (16 days ago, 2months ago).
We should show elapsed time only for recent transactions, for the older ones we should show exact date.
Add Terms and Conditions screen
For the 24 words setup, it would be great if I could copy it. And then when entering back in, the cursor should automatically advance to the next field if I type in the right word (c) Lev
Currently the app would all the time try to fetch currency rates from Coingecko to display Grin funds in an alternative currency. The whole feature should be optional, so a user can turn it on/off in Settings.
Wallet should be able to send and receive grins via grinbox
Currently, when users report an issue it's very hard to guess why this happens because we do not have any metadata about the state of the app when the bug happens. We need some sort of reporting system, which gathers the redux state of the app, current wallet_data
directory, list of all redux actions from the moment of the app launch and probably a screenshot or ability to add one manually by the user.
We also need a tool, which can push this data quickly to dev environment, so we can reproduce the bug ASAP.
As a part of the project Share Extension
needs to be implemented and "Copy to Ironbelly" should be renamed to "Ironbelly".
Same functionality as the core wallet has
Happy to help setup i18n for English
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.