Oleg Andreev



Software designer with focus on user experience and security.

You may start with my selection of articles on Bitcoin.

Переводы некоторых статей на русский.



Product architect at Chain.

Author of Gitbox version control app.

Author of CoreBitcoin, a Bitcoin toolkit for Objective-C.

Author of BTCRuby, a Bitcoin toolkit for Ruby.

Former lead dev of FunGolf GPS, the best golfer's personal assistant.



I am happy to give you an interview or provide you with a consultation.
I am very interested in innovative ways to secure property and personal interactions: all the way from cryptography to user interfaces. I am not interested in trading, mining or building exchanges.

This blog enlightens people thanks to your generous donations: 1TipsuQ7CSqfQsjA9KU5jarSB1AnrVLLo
Build configurations for the real world iPhone app with in-app purchases (in-app product is a time-limited subscription):
Debug — uses localhost;
Debug sandboxing storekit — tells server to use sandbox verification URL;
Debug bypassing storekit —...

Build configurations for the real world iPhone app with in-app purchases (in-app product is a time-limited subscription):

Debug — uses localhost;

Debug sandboxing storekit — tells server to use sandbox verification URL;

Debug bypassing storekit — ignores storekit and assumes subscription is always valid;

Debug simulated storekit — substitutes SK* classes with our in-house mocks, allows testing on Simulator and localhost;

Debug simulated storekit + restored transactions — same as above + allows restoring valid subscriptions;

Release bypassing storekit — uses real host, but ignores storekit and assumes subscription is always valid;

Release sandboxing storekit — uses real host, tells the server to use sandbox verification URL;

Release — regular release config (obsolete; we are using “Release sandboxing storekit” instead);

Distribution — config for AppStore publishing.

Note: I have written simulated storekit classes when we experienced iTunes Connect outage and “add new sandbox user” form issues.

Note-2: Each non-release configuration issues a #warning in every place where some non-shippable value is used (e.g. localhost, hardcoded default location, storekit substitution)