Bitcoin Forum
August 19, 2019, 12:50:01 AM *
News: Latest Bitcoin Core release: 0.18.0 [Torrent] (New!)
 
   Home   Help Search Login Register More  
Pages: « 1 [2] 3 »  All
  Print  
Author Topic: Bad Code Has Lost $500M of Cryptocurrency in Under a Year  (Read 1009 times)
Quickseller
Copper Member
Legendary
*
Offline Offline

Activity: 1876
Merit: 1745



View Profile WWW
February 17, 2018, 05:28:16 AM
 #21


A lot of good reasons to stick with Bitcoin, esp. Core and keep running full nodes and I also would trust smart contracts a lot more, if they would be based on the the Bitcoin blockchain than on any other shitchain.  In my opinion ALL of the > 1000 Alts are rather the result of missed financial/fame opportunities than a real technological progress.
I don’t think this would solve the problem that caused these losses. Bitcoin core doesn’t have any functionality that keeps track of user balances that are separate and distinct from wallet balances.

To my knowledge, these companies were tricked into signing transactions for amounts larger than they should have. I don’t believe there were any issues with the wallet software in that the wallet behaved as it should have — the wallet software did not think deposits were received that never confirmed and signed transactions as instructed.

I think the root cause of this is bad business practices. Notwithstanding poor implementation of verifying account balances (and similar) these companies either held way too much money in their hot wallet, did not verify DB balances matched blockchain balances (within a reasonable variance), did not investigate the root cause of overdrafts and/or a combination of the above prior to topping off the hot wallet.

Bitcoin
1566175801
Hero Member
*
Offline Offline

Posts: 1566175801

View Profile Personal Message (Offline)

Ignore
1566175801
Reply with quote  #2

1566175801
Report to moderator
PLAY NOW
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise here.
1566175801
Hero Member
*
Offline Offline

Posts: 1566175801

View Profile Personal Message (Offline)

Ignore
1566175801
Reply with quote  #2

1566175801
Report to moderator
zonezICO
Newbie
*
Offline Offline

Activity: 13
Merit: 1


View Profile WWW
February 17, 2018, 07:04:06 PM
 #22

As a general rule, good programmers can write good code in whatever language they happen to use; and bad programmers will write bad code in any language they try.  Moreover, no formulaic technique will turn idiots who don’t know what they’re doing into software engineers.

Hi Nullius, thank you for your very blunt and honest answer.  I appreciate it.  

I'm going to start learning Simplicity ASAP.  

If anybody else here knows of any resources of how to best learn it, it'd be greatly appreciated.

Thanks in advance!
Z
nullius
Copper Member
Full Member
***
Offline Offline

Activity: 168
Merit: 780


Help! I’ve got the Pleurodelinaemia! @nym.zone


View Profile WWW
February 17, 2018, 07:51:31 PM
 #23

Hi Nullius, thank you for your very blunt and honest answer.  I appreciate it.  

I'm going to start learning Simplicity ASAP.  

If anybody else here knows of any resources of how to best learn it, it'd be greatly appreciated.

I’m happy to help.

As I said in my post, Simplicity is still in the research stages.  I linked to the original Simplicity paper (PDF) in one of my earlier posts in this thread.  Per the whole subject of this thread, doing things right takes time!  A formally verifiable domain-specific language needs serious R&D work.  This is the stuff of heavy-duty computer science; it is not something which can be slapped together overnight.

I think if you read the paper, you’ll be as impressed as I am.

Note that anything in the research stage does not have guaranteed results.  I think the concepts look sound, insofar as I am able to understand.  The hard maths of provable code exceed my own level of education (not only in Simplicity).  Yet if you walk through the paper, I think you’ll find the general shape of Simplicity not difficult to grasp.  It’s called “Simplicity” for a(t least one) good reason:  It’s designed to provide a foundation which will be simple to use for building powerful smart contracts (never mind the R&D to get to that point).  The people working on it do have a track record of delivering results.  I look forward to seeing how this develops.

sjyi
Jr. Member
*
Offline Offline

Activity: 168
Merit: 1


View Profile
February 17, 2018, 09:23:48 PM
 #24

As these events occur again and again we get to reflect on code developers and their skills.  Should they even be allow to release these coins?

Even though most of the coin source code is found in github, do people really go through them?  They are usually provided with no clear explanation as to what is going on within the code.  Much of the system is copied (forked) from previous projects and re-used.  It takes quite some time and effort to figure out what is going on.

I see many people signing up for bounty programs for new coin announcements even though much of the business and/or technical details are missing.  The only thing the announcements seem to boast are the bounty programs.  These coins still raise millions of USD. 

By looking at some meetups activities, it looks like the waves of new coins will continue if not pick up more speed.  With such a madness to release coins so quickly, the coding errors are inevitable.  But prior to talking about code bugs, the requirement errors should be first identified.  I wonder if all these rapid releases even understand their own requirement.

❍ E t h e r a f f l e ❍ The worlds first & only decentralized charitable lottery ❍ ICO Live Now! ❍ (https://etheraffle.com)
zonezICO
Newbie
*
Offline Offline

Activity: 13
Merit: 1


View Profile WWW
February 18, 2018, 01:55:36 AM
Merited by AGD (1)
 #25

Note that anything in the research stage does not have guaranteed results.  I think the concepts look sound, insofar as I am able to understand.  The hard maths of provable code exceed my own level of education (not only in Simplicity).  Yet if you walk through the paper, I think you’ll find the general shape of Simplicity not difficult to grasp.  It’s called “Simplicity” for a(t least one) good reason:  It’s designed to provide a foundation which will be simple to use for building powerful smart contracts (never mind the R&D to get to that point).  The people working on it do have a track record of delivering results.  I look forward to seeing how this develops.

Nullius, thanks again for the heads up on Simplicity.  I looked over the white paper and asked the Google his thoughts and am excited to give it a test drive in future.  Especially the different combinators and convenants.

Ironically though, you sort of reinforced the point I had proposed earlier, in that by possibly using a functional language (Simplicity is functional), you lessen the chances of bad code due to the nature of functional languages having immutable state.  In fact, Simplicity takes it a step further as they don't allow loops (page 1 of white paper) and use functions written in Haskell, another functional language (pg.24 of white paper) to generate Simplicity.


As these events occur again and again we get to reflect on code developers and their skills.  Should they even be allow to release these coins?

Even though most of the coin source code is found in github, do people really go through them?  They are usually provided with no clear explanation as to what is going on within the code.  Much of the system is copied (forked) from previous projects and re-used.  It takes quite some time and effort to figure out what is going on.

I see many people signing up for bounty programs for new coin announcements even though much of the business and/or technical details are missing.  The only thing the announcements seem to boast are the bounty programs.  These coins still raise millions of USD.  

By looking at some meetups activities, it looks like the waves of new coins will continue if not pick up more speed.  With such a madness to release coins so quickly, the coding errors are inevitable.  But prior to talking about code bugs, the requirement errors should be first identified.  I wonder if all these rapid releases even understand their own requirement.


I had eluded to "clean coding" in an earlier post.  Whether you like Agile or not, many lessons taught by Uncle Bob relate to the issues brought up in this thread:

"Clean code is simple and direct.  Clean code reads like well-written prose"

https://www.goodreads.com/work/quotes/3779106-clean-code-a-handbook-of-agile-software-craftsmanship-robert-c-martin

If we're depending on the open source community as a whole to advance these new ideas and new paradigms, I think it's vitally critical to write code so that anybody else can take it further very easily.  

In regards to forking, I went to a great seminar last week where a VC/ICO investor brought up an interesting point in that since forking is more commonplace, what differentiating value can a company offer other than the product?  For me, the answer was obvious.  Great community of intelligent programmers.  So the question is what do intelligent programmers want in a company?  I think it was JFK who said:

"Ask not what your programmer can do for you, rather ask what you can do for your programmer" (drum hit!)

In regards to new coin announcements with critical business details missing, I completely agree.  (pls can somebody explain why Cryptokitties has done so well and what their monetization strategy is??)  

Part of the reason I joined this forum is my startup was going the traditional VC route, working on getting ACTUAL METRICS & TRACTION first but some of our competitors launched successful ICOs so I'm hoping to learn from all of you why any sane investor would invest in an ICO with NO metrics?  We want to be the exact opposite and have maximum transparency, great metrics, great programmers (pm me) before we would even think of launching an ICO.

For those of you who aren't familiar with the VC venture capital world, ICOs are an existential threat to their industry, which is ironic since they are usually the ones disrupting entire industries.  This is great for programmers who have great ideas because unless you're lucky enough to find a VC who shares your vision of the future, it can be very time consuming to raise capital.  

Lastly, our company is a B Corp (public benefit corporation) and we'd like to set it up as a Teal corp for maximum transparency but am curious if people even care about that.  
https://www.strategy-business.com/article/00344?gko=10921
Kakmakr
Legendary
*
Offline Offline

Activity: 1750
Merit: 1335

★ ChipMixer | Bitcoin mixing service ★


View Profile
February 18, 2018, 06:53:29 AM
 #26

Most of the Bad code is a result of companies using proprietary software. In the Open source environment, proper Peer review are done, before the code is submitted and applied. Some of these companies are in such a rush to be "first to market" that they skip beta testing and review. They want to be "first to market" and then patch like cowboys in a live environment.  Angry

This is why Bitcoin is so secure. Nothing is rushed, proper testing is done on a TestNet and submitted for Peer review. We saw what happened with rush implementation with Bitcoin XT.  Roll Eyes

npredtorch
Legendary
*
Offline Offline

Activity: 1120
Merit: 1004


View Profile
February 18, 2018, 08:24:04 AM
 #27

On the other hand, I could say that people/users can be blame too for this inexplicable continuous hacking & bad news. Why?
Simply because most of them don't want projects that are slow on production. They only think about the "hype" without realizing that there is a proper flow for conducting new features. They passively pushes the developers/coders to do an early releases that have greater chances for bugs and errors. This is a very common thing on some projects here in bctalk  Wink



HeRetiK
Legendary
*
Offline Offline

Activity: 1204
Merit: 1111


the forkings will continue until morale improves


View Profile
February 18, 2018, 11:26:09 AM
Merited by nullius (1)
 #28

As these events occur again and again we get to reflect on code developers and their skills.  Should they even be allow to release these coins?

Everyone should be allowed to release coins. That's the whole point of being able to fork open source code -- cryptocurrencies are no different in that matter. It's only that people should be smarter than throwing their money at every new coin and token that enters the market.


I see many people signing up for bounty programs for new coin announcements even though much of the business and/or technical details are missing.  The only thing the announcements seem to boast are the bounty programs.  These coins still raise millions of USD.

People that sign up for bounty programs don't care much about a project's feasability. Why should they, it's free money for the most part (ignoring time spent).

It's only when people start literally buying into it that things get problematic. But they can mostly blame it on themselves, if you're honest. No one is forcing anyone to invest in something that they don't understand.


By looking at some meetups activities, it looks like the waves of new coins will continue if not pick up more speed.  With such a madness to release coins so quickly, the coding errors are inevitable.  But prior to talking about code bugs, the requirement errors should be first identified.  I wonder if all these rapid releases even understand their own requirement.

It seems like every now and then people need to take a lesson. Many people will waste their time and money, but in the end the worthile projects will prevail and some people will hopefully end up smarter regarding what makes a good project.


Most of the Bad code is a result of companies using proprietary software. In the Open source environment, proper Peer review are done, before the code is submitted and applied. Some of these companies are in such a rush to be "first to market" that they skip beta testing and review. They want to be "first to market" and then patch like cowboys in a live environment.  Angry

An open source environment doesn't prevent one from writing incorrect code. Case in point:

We saw what happened with rush implementation with Bitcoin XT.  Roll Eyes

I guess you are mostly referring to applying a proper engineering methodology. Whether you do proper engineering has nothing to do with being open source or being proprietary -- it's a matter of properly assessing how critical your code is. And in crypto pretty much every bit of code is critical while most devs still seem to be in happy-go-lucky start-up land, instead of in finance.

rehydrogenated
Full Member
***
Offline Offline

Activity: 266
Merit: 101


View Profile
February 18, 2018, 02:01:48 PM
 #29

I have been part of a few airdrops with bad code. Some have completed a swap and others have decided to just shut down the project and start over again.

One really good team for finding bad code is the Ethereum Blue team. They are developing the BLUE wallet, which is supposed to be very secure. One of their goals is to use statistical analysis to find flaws in contract code and warn everyone about them. They found the Etherdelta hack, the Monero Gold scam and the Etherdoge scam. Honestly, they are doing the crypto world a huge favor. 
zonezICO
Newbie
*
Offline Offline

Activity: 13
Merit: 1


View Profile WWW
February 18, 2018, 07:49:45 PM
 #30

Most of the Bad code is a result of companies using proprietary software. In the Open source environment, proper Peer review are done, before the code is submitted and applied. Some of these companies are in such a rush to be "first to market" that they skip beta testing and review. They want to be "first to market" and then patch like cowboys in a live environment.  Angry

This is why Bitcoin is so secure. Nothing is rushed, proper testing is done on a TestNet and submitted for Peer review. We saw what happened with rush implementation with Bitcoin XT.  Roll Eyes

Thanks for this post!  I personally hadn't realized there was a lot of proprietary software being used in this space as I thought the whole point and benefit was leveraging the open source community.  I'll ask my dev partners if they know of TestNet.  I'm personally only familiar with TDD/BDD so love learning about any new testing paradigms that ensure the code is solid and not brittle.

On the other hand, I could say that people/users can be blame too for this inexplicable continuous hacking & bad news. Why?
Simply because most of them don't want projects that are slow on production.

Is it therefore more of a responsibility of the company to manage expectations and even use that as PR to showcase that the team is being extremely thorough in their testing of the code?

And in crypto pretty much every bit of code is critical while most devs still seem to be in happy-go-lucky start-up land, instead of in finance.

Your post gave me an inspirational idea.  Would having programmers who previously worked for banks be preferred since they'll be particularly aware and sensitive to the nature of finance?

I have been part of a few airdrops with bad code. Some have completed a swap and others have decided to just shut down the project and start over again.

One really good team for finding bad code is the Ethereum Blue team. They are developing the BLUE wallet, which is supposed to be very secure. One of their goals is to use statistical analysis to find flaws in contract code and warn everyone about them. They found the Etherdelta hack, the Monero Gold scam and the Etherdoge scam. Honestly, they are doing the crypto world a huge favor. 

This looks exciting.  I tried searching for the Github but is there only an SDK available right now?

An estimated $280 million worth of the cryptocurrency ether is locked up because of one person's mistake.

An unidentified user accidentally deleted the code library required to use recently created digital wallets within Parity, a popular digital-wallet provider,

Your post reminded me to this older story:
https://dealbook.nytimes.com/2012/08/02/knight-capital-says-trading-mishap-cost-it-440-million/
BenOnceAgain
Member
**
Offline Offline

Activity: 210
Merit: 83

🌐 www.btric.org 🌐


View Profile WWW
February 20, 2018, 07:46:28 PM
 #31

It seems like both developers and investors tend to forget that they are handling real, actual money. Would you leave a suitcase full of cash in the middle of the street? Would you give your credit card data to some random stranger on the internet? That's what basically happens in crypto all the time.

I think that there is wide variation between projects/services in how seriously they consider security issues and code vulnerabilities.  It is also difficult to know for sure which is a A+ project and which is an F, especially when they first launch.  Even Amazon faced this problem when it was new.  Some people didn't trust online commerce at all, it had to earn the trust of its customers.

With crypto assets, the situation is worse in some ways because the stakes are potentially much higher.  A crypto exchange is essentially a bank if it has custodial control over funds.  So it needs to have bank-level security.  But a new exchange just launching might have the very best security practices in place, but it will have to earn over the trust of its customers.  But the reality is that a new exchange launching needs enough customers in order to stay in business, so the difficulty can be real in earning enough customers as an unproven entity.  Decentralized exchanges provide a good answer, but only to the extent that they are implemented and operated in a secure manner.  But decentralized exchanges will not end the need for fiat/crypto gateways, at least for the time being.  Some actual standards that are established, maintained as technology evolves, and are complied with by these businesses could help to at least set a baseline in these areas.  I'm not saying they should be "mandated" (though regulators may have a different view of that), but rather, that the market should favor those that choose to implement them.  Voluntary opt-in but a market expectation that any good operator does put these measures in place.

Of course, a conservative approach would be to not use any service other than those that you've been using and had no problems with.  Online trading of stocks took a while to be embraced by the masses.  Many people stuck to their brokers, with their high fees, for a long time because they either didn't want to learn the technology or because of stories they'd heard about fraud, weak security, and/or website functionality/UX issues.  Early stock trading websites weren't very fun to use, they were often adapted from internal systems that brokers used.

I absolutely agree with you. As much as I love that whole wild west, new frontier vibe that crypto is swinging, I so very much appreciate the formal approach that Bitcoin and some of the alts have taken.

To be fair, handling crypto is especially tricky. Holding what equates to actual cash on a computer system is unprecedented prior to cryptocurrencies. Even if you were handling payments there was usually some form of rollback available, should things go awry. Not so with crypto, yet it seems to be partially held to lower standards than finance which is insane.

Nonetheless we've come a long way since MtGox. It's almost as if the market has begun to realize that crypto is a billion dollar business now.

The "wild west" is a great approach to take in exploring ideas.  Some of the altcoins that aren't simple clones have some very interesting ideas that could eventually be more widely implemented in other, larger cryptos eventually.  Some of the ideas won't shake out, however.

But even altcoins are mostly "live", representing real money.  Of course anyone that gets involved with them knows that there is a chance the value could go to zero, but when you are dealing with actual funds, you have to be a little less "wild west".  There is a need for structured testing in testnets before you roll out something to your real blockchain that could end up destroying peoples money.  The best currencies do this.  Many of them, however, can't always afford the infrastructure to run a separate testnet.  I'm hoping to help some of the good ones with some infrastructure.

Also regarding the "wild west", regulations will be happening.  They already are in some legal jurisdictions.  My view is that, as a community--really an industry--that it is far better to get out in front of regulations with common-sense, reasonable standards that are adopted as industry best-practices.  Regulators are inclined to work with their "constituents" if they are legitimately dealing, as an industry, with the problems.  I don't think crypto assets will be banned in any major country (and of course I understand the argument that they "can't" be banned due to their nature, which is true, but that doesn't mean that regulators don't ban something on paper) because some countries are openly embracing Bitcoin and seem to be becoming aware of the wider implications of moving to decentralized systems.  The comment yesterday from the Prime Minister of India was really nice to see, for example.

Another area that needs a close look is the way that KYC is conducted in ICO/ITO offerings.  In my view, the risk of giving out your information to some project on the Internet is just as high, if not higher, than the risk of losing funds from the venture.  Identities can be stolen, either by a hack or by malicious ICO projects.  This is something that the industry could establish a decentralized solution that would balance the legal requirements with practical requirements of the crypto model.  These rules were written for banks, and while there is some overlap, there is also a different set of considerations that need to be taken into account when dealing with decentralized entities.

Hats off to you for critically evaluating technologies. I know this approach should be the standard, however it unfortunately isn't, which makes me all the more glad to hear that there are still organizations and companies out there that take a sane and prudent approach at blockchain techologies.

Thank you very much.  I hope it does become the standard.

I don't think that European banks are much better in that regard.

Referring to "But who would bank with a company that was so careless with funds".... I honestly think that consumers are at least partially to blame on that matter. If people would avoid shoddy exchanges in the first place, a lot of these dramas could be avoided.

I agree that consumers share in the responsibility to make sure the places they do business with are trustworthy.  At the same time, there needs to be a pathway for new businesses to be able to enter the market and be able to prove that they, too, are able to be trusted.  I guess a "toe in the water" approach, trying a new business slowly, is one way to approach that.  Standards that are voluntary but that become "expected" is another approach.

As the industry expands, these things will be put in place, either by the industry or by the regulators.  U.S. securities markets are "self-regulated" with entities like the SEC providing oversight to "self-regulatory organizations" such as FINRA.  That could be a good model that balances the unique aspects of crypto assets with the legal requirements.

In any event, it's good to be able to have this conversation.  It's good to know that others are also thinking about these factors.

Best regards,
Ben

Dream it. Plan it. Build it.
Need help with your project? [MY WEBSITE] | [MY COMPANY] | [BLOG] | [TWITTER] | [LINKEDIN] | [EMAIL]
Want to help support the blockchain charity I'm building? [LEARN ABOUT BTRIC] | [DONATE] | [TWITTER] | [EMAIL]
nullius
Copper Member
Full Member
***
Offline Offline

Activity: 168
Merit: 780


Help! I’ve got the Pleurodelinaemia! @nym.zone


View Profile WWW
February 21, 2018, 05:26:12 AM
Last edit: February 21, 2018, 06:07:56 AM by nullius
 #32

I intended, and may perhaps make some replies upthread.  Sorry, I lost track of the discussion.

Whereas now, I am compelled to call out an object example of just how we get so much bad code, causing so many losses:

I want to learn coding / with blockchain whats the best language?

Some excerpts of my reply:

First, realize that you have a profound responsibility when you write code which handles Other People’s Money.

I am all for helping more people become Bitcoin users.  But we do not need more coders.  We need fewer and better coders working on Bitcoin and “cryptos”.  Whereas most people are innately incapable of ever becoming good coders, just as I myself am innately incapable of ever becoming an Olympic gymnast.

Do I discourage you?  I intend to!  You should be discouraged from learning to code machinery which handles Other People’s Money, unless you have such a keen ability that nothing I say could possibly discourage you.  People who have such an ability always do know themselves that way.

If you have NO experience start with HTML and CSS, slowly work your way into JS. Once in JS, Solidity should come fairly easy to you

This is how we eventually obtain such threads as, “Bad Code Has Lost $500M of Cryptocurrency in Under a Year”.  See especially the discussion downthread of Ethereum.

If that’s how you need to learn to code, then YOU SHOULD NOT BE CODING.  Most of all, you should stay the hell away from Other People’s Money.

Think:  Would you trust a surgeon who started his formal studies by doing “surgery” on pineapples with a kitchen knife, then worked up from there?

We will stop getting “Bad Code Lost XYZ” threads, when people take the coding of financial software as seriously as they take the practice of medicine, engineering of bridges and tunnels, and other professional tasks where errors result in PEOPLE GETTING HURT.

Seriously.  This world is infected with the notion that everybody and his dog is entitled to learn programming.  People take it as an affront if you do not encourage this, and an outrage if you suggest that they are just not capable.  Then—surprise, surprise—“Re: Bad Code Has Lost $500M of Cryptocurrency in Under a Year”.

“If you have NO experience start with HTML and CSS, slowly work your way into JS.”  Please tell me you do not code anything which touches money, ever.

FWIW, one of the characteristics I respect about Core is its reputation for being—shall we say, a bit of a harsh environment.  Not a “welcoming environment”.  So-called “welcoming environments” are welcoming to the rot of lowering standards.

zonezICO
Newbie
*
Offline Offline

Activity: 13
Merit: 1


View Profile WWW
February 21, 2018, 06:47:51 AM
Last edit: February 21, 2018, 06:58:16 AM by zonezICO
 #33


Another area that needs a close look is the way that KYC is conducted in ICO/ITO offerings.  In my view, the risk of giving out your information to some project on the Internet is just as high, if not higher, than the risk of losing funds from the venture.  Identities can be stolen, either by a hack or by malicious ICO projects.  This is something that the industry could establish a decentralized solution that would balance the legal requirements with practical requirements of the crypto model.  These rules were written for banks, and while there is some overlap, there is also a different set of considerations that need to be taken into account when dealing with decentralized entities.


I think you just came up with the BILLION DOLLAR IDEA right here!


Whereas now, I am compelled to call out an object example of just how we get so much bad code, causing so many losses:


I'm being dead serious here but one of the reasons I keep coming back to this board is for experts such as yourself, HeRetiK and BenOnceAgain (hey just noticed the little rhyming pattern)

Have you thought of doing an advanced course that teaches best practices?  Why not monetize your knowledge and expertise and simultaneously benefit the community to have better standards and protocols?  
paz-1991
Jr. Member
*
Offline Offline

Activity: 50
Merit: 1


View Profile
February 22, 2018, 06:14:25 PM
 #34

This industry is very fresh. You should always have double-check code reviews with your team, if not quad-check it. This is why hackathons and bug-bounty programs exist. It should never be the responsibility of one, team work is very important. Everyone is trying to quickly get into the industry and try to make money, however ethical issues should also be kept in mind. The stronger your code is, the better your reputation is, the better your product will be.

Sorry but nobody really does doublecheck by another team anywhere in dev, so def. not in a new industry like crypto...
zonezICO
Newbie
*
Offline Offline

Activity: 13
Merit: 1


View Profile WWW
February 22, 2018, 08:06:21 PM
 #35

This industry is very fresh. You should always have double-check code reviews with your team, if not quad-check it. This is why hackathons and bug-bounty programs exist. It should never be the responsibility of one, team work is very important. Everyone is trying to quickly get into the industry and try to make money, however ethical issues should also be kept in mind. The stronger your code is, the better your reputation is, the better your product will be.

Sorry but nobody really does doublecheck by another team anywhere in dev, so def. not in a new industry like crypto...

I respectfully disagree.  As a company, you would want to ensure your code is reliable and has been vetted by other professionals. 

Your reputation is important if you want to sustain a long term company that provides a service to the world.
tokexchain
Member
**
Offline Offline

Activity: 145
Merit: 10


View Profile
February 22, 2018, 10:20:15 PM
 #36

A lot of coins are lost in coin swaps and even from dust into wallets, nany people on waves do not back up thier wallet seed and I know of some cases where tokens and whole accounts are lost, and shall we go onto encrypted QTs, again lots have lost from these.. It's human nature to lose shit or fuck shit up  Roll Eyes
mountrock
Member
**
Offline Offline

Activity: 154
Merit: 10


View Profile
February 25, 2018, 02:35:32 AM
 #37

It is sad and reality. On the other hand hard working people will find the issues as opportunity to develop better products.
AGD
Legendary
*
Offline Offline

Activity: 1836
Merit: 1055


Keeper of the Private Key


View Profile
February 25, 2018, 07:32:14 AM
Merited by Foxpup (1)
 #38

The recent (and a really good) example of bad code here: http://www.tangleblog.com/wp-content/uploads/2018/02/letters.pdf

Quote
Dom, David and the rest of the IOTA team,
We have found serious cryptographic weaknesses in the cryptographic hash function
curl used by IOTA, curl. These weaknesses threaten the security of signatures
and PoW in IOTA as PoW and Signatures rely on curl to be pseudo random and collision
resistant.
...

Bitcoin is not a bubble, it's the pin!
+++ GPG Public key FFBD756C24B54962E6A772EA1C680D74DB714D40 +++ http://pgp.mit.edu/pks/lookup?op=get&search=0x1C680D74DB714D40
nullius
Copper Member
Full Member
***
Offline Offline

Activity: 168
Merit: 780


Help! I’ve got the Pleurodelinaemia! @nym.zone


View Profile WWW
February 25, 2018, 11:38:06 PM
Merited by achow101 (2), LoyceV (1)
 #39

The recent (and a really good) example of bad code here: http://www.tangleblog.com/wp-content/uploads/2018/02/letters.pdf

Quote
Dom, David and the rest of the IOTA team,
We have found serious cryptographic weaknesses in the cryptographic hash function
curl used by IOTA, curl. These weaknesses threaten the security of signatures
and PoW in IOTA as PoW and Signatures rely on curl to be pseudo random and collision
resistant.
...

This is not “bad code”.  It is DIY crypto.  Worse, DIY crypto for a primitive—a DIY hash!  Worse still, DIY crypto by a corporate outfit which never showed any evidence of being inhabited by world-class cryptographers—despite their claim in a spin-job piece that “the IOTA Foundation has already subcontracted a team of 5 world-class cryptographers, as well as 3 independent ones to come up with a final design of Curl and then start the long peer-reviewed process, as was always the plan.”  N.b. that even world-class cryptographers need their primitive designs to undergo extensive peer review before fielding them with Other People’s Money—whether it’s the “final design”, or otherwise!

One of the people who broke IOTA had some damning words for it, in “Cryptographic vulnerabilities in IOTA”:

Quote from: Neha Narula (2017-09-07)
You might think that IOTA, a cryptocurrency worth over a billion dollars, and working with organizations like Microsoft, University College London, Innogy, and Bosch, BNY Mellon, Cisco, and Foxconn (through the Trusted IOT Alliance) would not have fairly obvious vulnerabilities, but unfortunately, that’s not the case. When we took a look at their system, we found a serious vulnerability and textbook insecure code.

“In 2017, leaving your crypto algorithm vulnerable to differential cryptanalysis is a rookie mistake. It says that no one of any calibre analyzed their system, and that the odds that their fix makes the system secure is low,” states Bruce Schneier, renowned security technologist, about IOTA when we shared our attack.

Anybody who buys into such ill-conceived crypto-junk as IOTA deserves to lose their money, on grounds of foolishness.


As these events occur again and again we get to reflect on code developers and their skills.  Should they even be allow to release these coins?

Who’s going to stop me from releasing code?  You?  Some government?

N.b. that anybody who could forcibly stop code monkeys from releasing bad code would also have the practical power to ban Bitcoin.

Even though most of the coin source code is found in github, do people really go through them?  They are usually provided with no clear explanation as to what is going on within the code.  Much of the system is copied (forked) from previous projects and re-used.  It takes quite some time and effort to figure out what is going on.

I see many people signing up for bounty programs for new coin announcements even though much of the business and/or technical details are missing.  The only thing the announcements seem to boast are the bounty programs.  These coins still raise millions of USD. 

By looking at some meetups activities, it looks like the waves of new coins will continue if not pick up more speed.  With such a madness to release coins so quickly, the coding errors are inevitable.  But prior to talking about code bugs, the requirement errors should be first identified.  I wonder if all these rapid releases even understand their own requirement.

Well, next time somebody tries to argue with my statement that 99.9% of altcoins an 100% of ICOs are pure make-money-fast scams—may I refer to your above statement?


Nullius, thanks again for the heads up on Simplicity.  I looked over the white paper and asked the Google his thoughts and am excited to give it a test drive in future.  Especially the different combinators and convenants.

Ironically though, you sort of reinforced the point I had proposed earlier, in that by possibly using a functional language (Simplicity is functional), you lessen the chances of bad code due to the nature of functional languages having immutable state.  In fact, Simplicity takes it a step further as they don't allow loops (page 1 of white paper) and use functions written in Haskell, another functional language (pg.24 of white paper) to generate Simplicity.

It’s all about the right tool for the job.  Simplicity is domain-specific, with very particular requirements.  The code used for creating Simplicity will inherit some second-order version of the same requirements.

Whereas for general-purpose programming, my own point was that there is no magic bullet.  If some Haskell experts think that Haskell is the right tool for their job, then they will probably get good results.  But their results will not necessarily be superior to those of C++ experts writing C++.  More to the point, Haskell would not be a magic bullet for fixing the trash code churned out by idiots; and on the flipside, there is no sound reason for, say, Core to switch to Haskell.

I observe, Simplicity will not be able to prevent people from writing insecure smart contracts.  Again:  No magic bullet!  Its purpose is to let smart people formally verify their contracts.


Most of the Bad code is a result of companies using proprietary software. In the Open source environment, proper Peer review are done, before the code is submitted and applied. Some of these companies are in such a rush to be "first to market" that they skip beta testing and review. They want to be "first to market" and then patch like cowboys in a live environment.  Angry

This is why Bitcoin is so secure. Nothing is rushed, proper testing is done on a TestNet and submitted for Peer review.

Open source is not a magic bullet, either.  You didn’t say as such—but many people do.  Thus why I added boldface to the important parts, which are facilitated and enabled by open source.

We saw what happened with rush implementation with Bitcoin XT.  Roll Eyes

XT had severe bugs in its wetware layer.


On the other hand, I could say that people/users can be blame too for this inexplicable continuous hacking & bad news. Why?
Simply because most of them don't want projects that are slow on production. They only think about the "hype" without realizing that there is a proper flow for conducting new features. They passively pushes the developers/coders to do an early releases that have greater chances for bugs and errors. This is a very common thing on some projects here in bctalk  Wink

This is what RISKS-subscriber types used to call “dancing pigs”.  People will not pay for correct, reliable, secure things.  People will not wait for them, either.  They want their dancing pigs, and they want them now!


And in crypto pretty much every bit of code is critical while most devs still seem to be in happy-go-lucky start-up land, instead of in finance.

Your post gave me an inspirational idea.  Would having programmers who previously worked for banks be preferred since they'll be particularly aware and sensitive to the nature of finance?

Banks’ code quality is oftentimes abysmal.  Of course, it depends on the institution—and such questions as, consumer banking vesus institutional investment.  But overall, I think that much banking code is “WTF”-riddled stuff which ultimately relies on transactions being revocable.  At best, you can’t rely on code being good just because it’s from a bank!

Moreover, persons from banks have been immersed in an institutional culture which is inimical and antithetical to the culture of Bitcoin.  Individuals will differ, of course; but I’d start out wary of anybody who had worked for a bank.

Ultimately, with people as with languages, there is no magic bullet.  If you look to the backgrounds of the best (non-anonymous) Core developers, I think you’ll find some vast differences.  So as for past history.  The common factor in the present is that they are smart, serious, responsible people who are devoted to Bitcoin.  In some cases, zealously.


Also regarding the "wild west", regulations will be happening.  They already are in some legal jurisdictions.

Good luck regulating me.  Or discerning which jurisdiction I am in.

Bitcoin is cypherpunk money.  Though I am sensitive to needs by others to comply with legal régimes, I am fundamentally opposed to any Bitcoin “regulation” of any kind.  Also, I myself will always ignore it in my personal affairs.

Moreover, regulations don’t work.  Highly regulated fields such as (cough) government and military contract work do tend to be bug-riddled abominations.  Banking code in many cases, as aforesaid.  Healthcare-related code, quite often.  And transportation...  Everything is broken.  Regulations don’t fix it.

Another area that needs a close look is the way that KYC is conducted in ICO/ITO offerings.  In my view, the risk of giving out your information to some project on the Internet is just as high, if not higher, than the risk of losing funds from the venture.  Identities can be stolen, either by a hack or by malicious ICO projects.  This is something that the industry could establish a decentralized solution that would balance the legal requirements with practical requirements of the crypto model.  These rules were written for banks, and while there is some overlap, there is also a different set of considerations that need to be taken into account when dealing with decentralized entities.

I have an easier solution:  Don’t ever do “KYC”.  Avoid anything and everything which requires it.

For Bitcoin-related purposes, I have never submitted to any “KYC” identity-rapeNo, really.  Nobody’s records show I own even a single satoshi—“nobody’s”, as in “nullius”.

Oh—you said “ICO”.  Well, those are scams which should be avoided, regardless.

BenOnceAgain
Member
**
Offline Offline

Activity: 210
Merit: 83

🌐 www.btric.org 🌐


View Profile WWW
February 26, 2018, 02:42:29 AM
Merited by nullius (5), DooMAD (2), achow101 (2)
 #40


One of the people who broke IOTA had some damning words for it, in “Cryptographic vulnerabilities in IOTA”:

Quote from: Neha Narula (2017-09-07)
You might think that IOTA, a cryptocurrency worth over a billion dollars, and working with organizations like Microsoft, University College London, Innogy, and Bosch, BNY Mellon, Cisco, and Foxconn (through the Trusted IOT Alliance) would not have fairly obvious vulnerabilities, but unfortunately, that’s not the case. When we took a look at their system, we found a serious vulnerability and textbook insecure code.

“In 2017, leaving your crypto algorithm vulnerable to differential cryptanalysis is a rookie mistake. It says that no one of any calibre analyzed their system, and that the odds that their fix makes the system secure is low,” states Bruce Schneier, renowned security technologist, about IOTA when we shared our attack.

Anybody who buys into such ill-conceived crypto-junk as IOTA deserves to lose their money, on grounds of foolishness.

My view: I am far from an expert on cryptography but I will say this, cryptocurrency depends on rock-solid, secure cryptography.  It is exactly where the trust is placed in an electronic money system. By removing it from governments/banks (who don't deserve it regardless), and instead trusting the software and the network it defines (not individual nodes, per se), you must have an extremely robust cryptographic algorithm and you also must be prepared to change it quickly should it ever prove to have a previously unknown weakness.  As far as I'm concerned that should be common sense.  I don't know precisely what happened with IOTA but I have read a little bit about it and I'm not sure why the currency continues to circulate given what I do know.  I guess too many people had invested into it by that point, which is more a political reason for continuing to exist rather than anything based on technical merit or the capability of the system.  I'm not sure why the IOTA people thought it was a good idea to throw in some untested cryptography, but that seems like a very amateur thing to do.

I agree that when people make a bad investment they deserve to lose their capital provided it wasn't outright fraud and that it is absolutely crucial to do your own research.  I do think that the bar should be lower than having to be a cryptographer, especially as crypto assets are more widely adopted.  Governments will seek to "protect" consumers to the extent they are able to.  I use quotes around the word protect because I disagree with a few things concerning the current direction that regulation of crypto assets seems to be taking.  I believe, in general, that cryptocurrencies should be treated as a currency, not as an investment asset class.  I think eventually that will shake out, but governments have a habit of doing all of the wrong things before finally doing the right one, so it does concern me.


As these events occur again and again we get to reflect on code developers and their skills.  Should they even be allow to release these coins?

Who’s going to stop me from releasing code?  You?  Some government?

N.b. that anybody who could forcibly stop code monkeys from releasing bad code would also have the practical power to ban Bitcoin.

...

Well, next time somebody tries to argue with my statement that 99.9% of altcoins an 100% of ICOs are pure make-money-fast scams—may I refer to your above statement?

I agree that many, most, of ICO/ITO projects just seem to be a money grab.  I think that's reflected in the high rate of failure and fraud.  I believe it has a potential for a  promising future method of raising funds for legitimate projects, but I believe the market should really be discerning about what projects people choose to invest in and that there should be some standard way to evaluate these projects.  Not mandated by some government but instead expected by the market.


It’s all about the right tool for the job.  Simplicity is domain-specific, with very particular requirements.  The code used for creating Simplicity will inherit some second-order version of the same requirements.

Whereas for general-purpose programming, my own point was that there is no magic bullet.  If some Haskell experts think that Haskell is the right tool for their job, then they will probably get good results.  But their results will not necessarily be superior to those of C++ experts writing C++.  More to the point, Haskell would not be a magic bullet for fixing the trash code churned out by idiots; and on the flipside, there is no sound reason for, say, Core to switch to Haskell.

I observe, Simplicity will not be able to prevent people from writing insecure smart contracts.  Again:  No magic bullet!  Its purpose is to let smart people formally verify their contracts.

Thank you for the link to that white paper.  Simplicity looks to be a substantial improvement over Solidity in terms of being able to implement a smart contract that is secure.  I agree that an individual contract is only as secure as the contract code.  But as far as Solidity goes, it has a funny name now that I think of it, because it seems anything but solid.  I really wanted it to be everything I thought it could when I first read about it, but it really "feels" fragile.  Maybe it's because of all the horror stories I've read about it.  But I don't think so.  I don't know how to describe it except to say it just doesn't have the rock-solid stability that one would expect from a scripting language that controls billions of dollars of underlying value.  I could be wrong, but usually when I am using a piece of tech and it doesn't have the right feel to it (that's really the only way I can succinctly describe it), it ends up being a dud.


Most of the Bad code is a result of companies using proprietary software. In the Open source environment, proper Peer review are done, before the code is submitted and applied. Some of these companies are in such a rush to be "first to market" that they skip beta testing and review. They want to be "first to market" and then patch like cowboys in a live environment.  Angry

This is why Bitcoin is so secure. Nothing is rushed, proper testing is done on a TestNet and submitted for Peer review.

Open source is not a magic bullet, either.  You didn’t say as such—but many people do.  Thus why I added boldface to the important parts, which are facilitated and enabled by open source.

We saw what happened with rush implementation with Bitcoin XT.  Roll Eyes

XT had severe bugs in its wetware layer.


On the other hand, I could say that people/users can be blame too for this inexplicable continuous hacking & bad news. Why?
Simply because most of them don't want projects that are slow on production. They only think about the "hype" without realizing that there is a proper flow for conducting new features. They passively pushes the developers/coders to do an early releases that have greater chances for bugs and errors. This is a very common thing on some projects here in bctalk  Wink

This is what RISKS-subscriber types used to call “dancing pigs”.  People will not pay for correct, reliable, secure things.  People will not wait for them, either.  They want their dancing pigs, and they want them now!


And in crypto pretty much every bit of code is critical while most devs still seem to be in happy-go-lucky start-up land, instead of in finance.

Your post gave me an inspirational idea.  Would having programmers who previously worked for banks be preferred since they'll be particularly aware and sensitive to the nature of finance?

Banks’ code quality is oftentimes abysmal.  Of course, it depends on the institution—and such questions as, consumer banking vesus institutional investment.  But overall, I think that much banking code is “WTF”-riddled stuff which ultimately relies on transactions being revocable.  At best, you can’t rely on code being good just because it’s from a bank!

Moreover, persons from banks have been immersed in an institutional culture which is inimical and antithetical to the culture of Bitcoin.  Individuals will differ, of course; but I’d start out wary of anybody who had worked for a bank.

Ultimately, with people as with languages, there is no magic bullet.  If you look to the backgrounds of the best (non-anonymous) Core developers, I think you’ll find some vast differences.  So as for past history.  The common factor in the present is that they are smart, serious, responsible people who are devoted to Bitcoin.  In some cases, zealously.

I agree that proprietary code quality is often horrible, especially banking.  My experience with banking code, like many other internal systems, is that it has been adapted and hacked and made to "work" with the digital equivalent of duct tape and bubble gum.  And that's on a good day.  More recently, there are banking systems that have resulted from merger after merger after merger of smaller banks into the large behemoths we have today that are reliant on code that has been in place for at least a decade.  No one dares to touch that code because if they do, they will break 500 things that you'd never expect have some dependency on this swiss-cheese like construct.  Most of my experience in this comes from commercial banking as opposed to investment banking, perhaps it's more cohesive over there?  But I doubt it.  Like any business, banks do not upgrade their systems and proprietary systems are among the worst from a "wtf how is this even working" perspective.  I mean, I am sure there are great coders in the banking business.  But they are the exception, not the rule.

Open source is NOT a magic bullet, as you said, it is more the peer-review and intensive testing process that creates quality code.  If I was writing code, especially something that represented money, or votes, or peoples health, I would want it to be widely tested.  Hack it, find the flaws, let's really make sure this code is resilient.  The best open source projects have this.  Too many, however, are missing crucial parts of the team or infrastructure to carry this out, or sometimes even the knowledge and understanding that this is a must for any code to be used in production.  People thinking they can just throw something together and hope for the best, when you're dealing with something like digital money, is highly irresponsible.

I also admire the zealousness of many of the Bitcoin Core team, those that I know of.  They are a big reason, to me, as to why Bitcoin is something I know deserves more trust than any of the altcoins.  Personally, I am a person that is passionate about the projects I take on and when I see that passion emanating from other people about their projects, it resonates with me.  Bitcoin is not perfect and certainly, it has evolved over time and will continue to do so.  But everything I have observed about the people that are part of Core, their writings on the listserv and discussions on GitHub, etc., shows me that they take their responsibility very seriously.  At least to me, that is a very important and crucial distinction between Bitcoin and 99.9% of the altcoins.


Also regarding the "wild west", regulations will be happening.  They already are in some legal jurisdictions.

Good luck regulating me.  Or discerning which jurisdiction I am in.

Bitcoin is cypherpunk money.  Though I am sensitive to needs by others to comply with legal régimes, I am fundamentally opposed to any Bitcoin “regulation” of any kind.  Also, I myself will always ignore it in my personal affairs.

Moreover, regulations don’t work.  Highly regulated fields such as (cough) government and military contract work do tend to be bug-riddled abominations.  Banking code in many cases, as aforesaid.  Healthcare-related code, quite often.  And transportation...  Everything is broken.  Regulations don’t fix it.

Another area that needs a close look is the way that KYC is conducted in ICO/ITO offerings.

I have an easier solution:  Don’t ever do “KYC”.  Avoid anything and everything which requires it.

For Bitcoin-related purposes, I have never submitted to any “KYC” identity-rapeNo, really.  Nobody’s records show I own even a single satoshi—“nobody’s”, as in “nullius”.

Oh—you said “ICO”.  Well, those are scams which should be avoided, regardless.

I agree that staying under the radar of regulations is an ideal scenario when that can be done.  However, that is not possible in all circumstances.  Fiat/crypto exchange (besides P2P cash) is very difficult, for example, without a relationship with an entity subject to KYC regs (at least in the US).  And for the foreseeable future, fiat/crypto conversion will be necessary for adoption.  

Regulations rarely do anything useful, I agree with that.  The thing about regulations that I know from a lot of experience with regulators is that it is much better to work with them than to ignore them and/or fight them completely.  Regulators often will defer to industry when they come together with a reasonable and workable solution to whatever the issue at hand is.  When this doesn't happen, the regulators decide on their own how best to handle the situation.  Or even worse, other interests chime in with their view and that becomes the model adopted by the regulators.  Right now crypto is around $450 billion USD in total market capitalization.  That's just a little under the market capitalization of Facebook, one company.  We know this is going to grow, and in my view, market capitalization isn't really a good metric to measure currencies, but it's quick on Google.  However, once crypto assets really start to bite into bank profitability, you better believe that they will be whining to the regulators to tighten the screws.  I believe that businesses in the cryptocurrency field need to be paying close attention and be prepared to work with regulators instead of letting them run the tables.

As far as ICOs go with KYC, I don't blame you for not giving out your information.  It's dangerous.  Losing the money you'd invest is bad enough, but having your identity stolen is just as bad, if not worse in many cases.  If ICOs are ever going to get away from the fraud aura, they need a way to be conducted legally without the extensive KYC information disclosed.  I can go on eBay and buy something right now from a stranger and, yes, they do get my address, but that's only because they're shipping me something.  I think there can be a better way to do KYC in the crypto realm.  The set of circumstances are very different between me going into a bank to open a bank account or opening an investment account online and deciding to invest in an ICO.  I can buy shares of stock without giving them a picture of the front and back of my passport and a selfie holding it up next to my face.  Why should it be any different from that?  I have some ideas to make KYC more safe and secure, ticking them around in my mind at this point.

Anyway, thanks for good things to think about.  I appreciate it.

Best regards,
Ben

Dream it. Plan it. Build it.
Need help with your project? [MY WEBSITE] | [MY COMPANY] | [BLOG] | [TWITTER] | [LINKEDIN] | [EMAIL]
Want to help support the blockchain charity I'm building? [LEARN ABOUT BTRIC] | [DONATE] | [TWITTER] | [EMAIL]
Pages: « 1 [2] 3 »  All
  Print  
 
Jump to:  

Sponsored by , a Bitcoin-accepting VPN.
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!