follow us on twitter . like us on facebook . follow us on instagram . subscribe to our youtube channel . announcements on telegram channel . ask urgent question ONLY . Subscribe to our reddit . Altcoins Talks Shop Shop


This is an Ad. Advertised sites are not endorsement by our Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise Here Ads bidding Bidding Open

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - CryptoYears

Pages: 1 2 3 [4] 5 6 ... 25
46
A really lovely creation this. I am following it for long time now and am very proud of how things have went thus far.

Just hope it continues on same lines.

47
On Youtube / Maya Preferred 223 Backs Bitcoin With Gold And Silver
« on: June 24, 2019, 02:38:21 PM »
Maya Preferred 223 remains a stable coin. Every token in this coin gets a support of about twenty-three thousand dollars worth of silver and gold. It is the first time for anything of this nature to appear on the internet. Maya Preferred 223 was launched last month and will help boost the crypto world efficiency. To be factual, the amusement and effectiveness of the coin is highly relating to bitcoin. 

One amazing thing about this crypto coin is that it has received appreciation since lunched last month. In the first month of launch alone, the price of Maya Preferred has risen to five hundred percent. Do you know that the Maya Preferred coin has better value than bitcoin? The actual price value of this coin today surpasses whatever you know about bitcoin. As bitcoin continues to experience some ups and downs, Maya Preferred is above 10,000 dollars and growing.

The value of this new and innovative cryptocurrency is a product of the support from silver and gold. The gold and silver that backs this digital asset comes from eight different sources in Mexico. The goal of Maya Preferred 223 creator is to boost the number of sources of gold and silver. It will help to increase the rate of producing the Maya Preferred coins to every user across the globe.

The UK Financial Limited is the registered organizer of the innovative crypto coin called Maya Preferred 223. The organizing firm for this digital currency is popular throughout the crypto world today. One great advantage of trusting the UK Financial Limited is their revolutionized creativity. The firm is currently backing its own assets with the best support that users deserve. Apart from that, the UK Financial Limited also has future plans to back and support other cryptocurrencies.

Another thing to know about the team at the UK Financial Limited is that the first cryptocurrency will be backed with its own token. It implies that bitcoin will soon be backed and supported with Maya Preferred 223 token. Will Maya Preferred 223 in conjunction with bitcoin revolutionize the crypto world? Without any iota of doubt, this new digital asset will change the face of the earth and how people do business. How is this possible? Well, the UK Financial Limited will make a transfer of twenty-three million Maya Preferred 223 tokens.

The tokens from the organizer will be placed in a secure escrow wallet. The amount is also the value of the bitcoin that miners will get. It implies that every bitcoin generated will be having about twenty-three million dollars worth in silver and gold. Join Maya Preferred 223 investment today and don’t miss out of its great benefits.

Watch the Video to know more:



MAPR President Interview:


48
It’s interesting to see a popular name like Waykichain picking Gate.io. Was there not any better option available??

49
Cryptocurrency Trading / Re: I fail in trading
« on: June 18, 2019, 08:00:42 PM »
I think the simplest reason behind people failing or struggling with making money through Crypto trading is lack of strategy and planning. And often when there is planning, there is nothing convincing about it. It’s not just about planning but it’s more to do with doing it in a proper way to benefit.

I am no expert, which is where I ensure I take all the help available. There are so many ways you can help yourself. I would suggest some Telegram groups for it. One group that I have recently joined is Crypto Sharks, they got FREE SIGNALS, which are weighted in gold! So there is so much like this to try for one just need to use common sense.

50
Binance / Binance blocks US customers
« on: June 15, 2019, 06:21:07 AM »

Binance has announced it will block all US customers, individual and corporate, from using the exchange, with rumors suggesting this is in direct retaliation to possible regulatory issues arising for the company.

The news broke today that the world’s largest exchange would bar all US citizens from trading on the site from September 12th of this year. Binance.com updated their Terms of Use that the company:

“is unable to provide services to any U.S. person.”

It is not all doom and gloom for US customers though. Many can still bypass the verification process by a VPN and withdrawals of up to 2 BTC ($16,500) is allowed without any verification.

A curious decision

The decision from founder Changpeng Zhao and Binance is curious and strange to say the least. This is because the US accounts or the largest amount of traffic for the website. With around 15% of the traffic coming from the US on average each month.


Binance Traffic (Source: Blockcrypto.com)

Perhaps the decision is down to serious violations by the company in the US, with the SEC breathing down Binance’s neck. It would seem that they have decided to jump ship and start a new plan.

Yesterday’s announcement that Binance plans to open a new, fully regulated fiat-to-crypto exchange to serve the U.S. market seems to add weight to this idea. Founder, CZ, also alluded to the idea of a start afresh, tweeting:

“Some short term pains may be necessary for long term gains. And we always work hard to turn every short term pain into a long term gain.”

Not the first time US citizens have been barred

The Binance block is not the first time this has happened. Binance is similar to Bitfinex and BitMEX, who both started blocking U.S. customers in late 2017 due to the challenging regulatory climate.

Two weeks ago the main user of Binance DEX also said it would begin geo-blocking U.S. customers and 28 other countries in July. Bittrex also claimed they would be geo-fencing 32 cryptocurrencies from the U.S. clients last week. Poloniex also took a similar route a couple of weeks ago.

Huobi, another major exchange also made a similar move to the one Binance is planning. They opened a new company alongside BAM Trading Services Inc, a small money services business listed in San Francisco, which was called HBUS. They recently renamed the company Huobi.

Source: https://www.asiacryptotoday.com/binance-blocks-us-customers/


51


Do you know that people can now get continuous bitcoins with the help of a low investment? While this may sound strange, but in reality, it is true. Bitcoins4Ever is an innovative service with several offers to provide prospective clients. The advancement of this company is beyond anticipation about receiving bitcoin.

If you look for a company that focuses on a bitcoin investment, then Bitcoins4Ever is the right place to go. One thing remains factual with this service user will enjoy more profits. In a nutshell, Bitcoins4Ever is a self-reliable and sustainable platform.

Benefits Of Using The Service Of Bitcoins4Ever:

1. It comes with great value. The sustainability of this service will help you remain active in the bitcoin market. The website is the first to display self-maintenance of bitcoin reception activities
2. It helps people to invest with a sense of intelligence, hope, and success. The platform can help to expand the progress of your business
3. Finding developmental opportunities is simple with this company
4. It is the first self-sustainable investment company of its kind
5. Users will make more profits for using this website

How To Access The Great Offers Of This Company?

The first step to take on Bitcoins4Ever is to sign up for an account. Once your account is active, you can go ahead to make a deposit.

Once the fund is seating in your account, ensure to make a purchase. For example, if you invest up to two hundred dollars, other users also take part in the process. If there are four users in the investment platform along with you, then the total amount becomes 1000$. The one thousand dollars happen to be the investment total for the first day of account. When comparing your investment for the first day, it will be the same as ten percent of the total amount.

If there is an increment of extra 1000$ on day two, the amount also changes. It means that the second day’s total investment amount is around two thousand dollars. Taking the same approach above, it means you have ten percent of the total investment. It brings you to an investment of two hundred dollars going to your second day’s activity.

It’s crucial to know that a 10% company commission is functional to the total investment. At this juncture, you will have access to one hundred and ninety dollars. The 190$ dollars will be the investment returns for using Bitcoins4Ever.
If the third day’s investment also moves to three thousand dollars, then you see some changes. The investor will get the original investment cost as the first day as the new returns. It also implies that you will be making 3.3 percent on the third day of your investment.

On other days, the event of your percentage profits will follow the same process. It implies the total amount you invest divided by sum of every day.

Referral Program:

To make Bitcoins4Ever more lucrative for users, you can refer to other people and earn. Investing other people to take part in this investment system will help you earn ten percent. The referral commission will give you the avenue to make 10% of other people. It means that when anyone you bring into the program invests, you’ll make money.

Referral Contest:

The event comes with a profit of 0.5 bitcoins that will expire on 2019-09-11.

Another thing to know is that the contest has different levels of earning as well.

The prize for the first degree is 0.09 BTC. For the second degree, you can expect to 0.06 BTC.

The prize of the third degree earning will be 0.038 BTC. With degrees four and five, users can earn around 0.01 BTC. Moving from degrees six to ten, you can earn 0.005 BTC. From the eleventh degree to one hundred, users will get a prize of 0.003 BTC.

Conclusion:

Are you looking for a self-reliable and sustainable investment platform that converts? By visiting Bitcoins4Ever today, you will enjoy more investment benefits. The company is all about helping people to earn with bitcoins. Give it a try now and see how the system works.

Official Website: https://bitcoins4ever.io/


52


What does the theft of billions of dollars by corrupt Malaysian government officials and the LIVE harvesting of transplant organs from innocent prisoners of conscience by the Chinese government have to do with the disappearance of Malaysia Flight 370? Everything

The world was taken by surprise on 8 March 2014 when various news media announced the sudden disappearance of the Malaysia Flight 370. With many searches conducted over months without any breakthrough, some questions are left unanswered. How could a whole airplane disappear into thin air without any trace? Why is there no wreckage found during the search?

What do we tell our unborn children when they hear of the Malaysia Flight #370? We need to tell the world the true story and event of the Malaysia flight #370. Darlene Lieblich Tipton, a Hollywood veteran is on the forefront in revealing the hidden secrets that the Chinese government doesn’t want the world to know about the disappearance of Malaysia flight #370.

The link between Malaysia Fight #370 and the Chinese Government

The world needs to hear the truth concerning the real event of Malaysia Flight 370. Have you ever thought why Darlene was prohibited from making any videos, pics, and text files publicly? Why was she sacked on the eve of the day she had planned to upload the video on YouTube?

We believe the disappearance of the Malaysia 370 flights was not a coincident as it reveals the shocking torture of the Falun Gong practitioners from the thumb drive Darlene was about to duplicate. These practitioners have a moral philosophy, which centered on tolerance, compassion, and truthfulness. Previously, they were supported by the Chinese Government but became a threat after their increase. The Chinese government tagged them as outlaws and even tortured those who refused to give up their faith. The government went as far as harvesting their organs without using any anesthesia.
 
Undoubtedly, the content of the thumb drive shows a direct link between funds missing from the multi-billion dollar Malaysian 1MDB program and material gifts for corrupt allies, friends, and relatives of the former Malaysian Prime Minister, which also included transplants of organs from innocent prisoners.

Crowdfunding for the MALAYSIA 370

To begin the production of the independent feature film “MALAYSIA 370,” through crowdfunding, she has already started with investing $500K from her personal 401K. Although the Malaysia 370 feature film project has a legal restriction for three years; however, it is not a documentary. The planned movie was pitched to various movie executives was rejected because they do not want to jeopardize their relationship with the Chinese government.

The film will unfold the untold story of the disappearance of Malaysia Flight #370. It will reveal who hijacked the plane, why was it hijacked, when went wrong and why the governments of Malaysia, China, and the United States haven't released any intelligence report of the 239 people on board and the plan itself.

The film will include A-list talents such as Sharon Stone, Harrison Ford, Brad Pitt, Richard Gere, and Lady Gaga who have been banned from China because of their criticism of the Chinese government on their horrendous human rights abuses. Lady Gaga will sing the theme song for the movie titled “Remember Me.”

There are various ways to be part of this mission. You can support the project by downloading the movie’s theme song, which comes in multiple languages. Additionally, investors can contribute by streaming her previous award-winning movie, make donations, or buy a Malaysia 370/Falun Gong Memorial Coin.

The MH370 ICO and Token

The ICO is scheduled to start on 1 June to 14 June 2019 with 200 million coins to be sold. During the ICO, one MH370 is equivalent to $0.05 with a minimum purchase of $50 for each purchase. The allocation of the token is as follows:

•   70% distributed during the ICO
•   20% for Long-term foundation budget
•   5% for legal expenses
•   5% for Airdrop and Bounty program

Investing in the MH370 token today with the purpose of not making money only but exposing the brutal treatment and atrocities committed by the Chinese government on its innocent citizens.

Proceeds from Crowdfunding

The funds raised during the crowdfunding will go for the production of the “MALAYSIA 370.” Proceeds from the movie will be used in building a memorial park for the crew and passengers of the Malaysia flight #370. Additionally, remaining proceeds will be used to groups that provide legal volunteer services for people unjustly arrested and persecuted in China. Furthermore, the funds will help in breaching the Chinese internet firewall to allow everyone to gain access to uncensored information.

All further details at:



Official Website: http://www.malaysia370-ico.com/

Facebook: https://www.facebook.com/malaysia370movie/
Twitter: https://twitter.com/malaysia370film
Telegram: @darlenetipton

53


The introduction of the world’s first Blockchain-based digital currency has led to the creation of several projects that are based on Blockchain technology. One of such projects is the Mimblewimble.

We created Mimblewimble protocol in 2016 with the goal of using the project to improve scalability and privacy of Bitcoin and other Altcoins. We tend to achieve this by creating a confidential and equally efficient Blockchain with the tendency to create reasonable money.

The objective of the Mimblewimble protocol is to address some of the existing problems in practically all Blockchain implementation. We intend to achieve this lofty goal by building Mimble on two major concepts: Transaction Cut-Through and Confidential Transactions.

•   Confidential Transactions

We implemented confidential transactions via a cryptographic commitment scheme with binding and hiding properties, its two major properties.

Mimblewimble Blockchain uses two basic properties for transactions validation. These are verification of zero sums, a concept that implies that the sum of the entire outputs minus the entire input must be equal to zero. This is to prove that during the transaction, new funds are not created.

Possession of private keys is another principle that is used for transactions validation. This concept implies that whoever possesses the ECC private keys is the owner of transaction outputs.

•   Transaction Cut-Through

Mimblewimble uses this property to improve its Blockchain. The property enables Mimblewimble to be extremely scalable. This is due to the possibility of eliminating the majority of transaction data over time while the security of such data remains intact.

It also removes and mixes data to increase anonymity as well. This helps users to use the protocol without revealing their identity to the third party. That’s an assurance of optimum users’ privacy.

We created Hermione on the Blockchain technology through the power of smart contract. The project was based on the Mimblewimble protocol. The Hermione project leverages the power of Mimblewimble to offer users alternatives for individuals who are passionate about cryptocurrency mining or using digital currencies for transactions.

Hundreds of transactions may be stored on a single block; this is in addition to tons of pieces of information that are to be stored on the Blockchain as well. The Cut Through feature allows such a huge volume of data to be compressed into smaller sizes. This makes it possible to remove a substantial part of the information from the block while the Blockchain’s security is not compromised.



We leveraged the unique abilities of the Mimblewimble protocol to create the Hermione project. 

Hermione is a unique opportunity for cryptocurrency users to get better results from using Bitcoin and other Altcoins. It also offers users the unique opportunity to transition from mere users to stakeholders in the industry, especially, with mining companies.

The platform also has HERM, its own token. This is an ERC 20 token that will be converted to HERM coin once we launch Minnet. We will launch the platform without pre-ICO, pre-mine, or any development coins. This is because its operations will be funded with funds generated from its blocks during its first five years of existence.

The several unique features of Hermione that make it stand out among its competitors are:

•   Better privacy: Your personal information is not needed on the platform. No information about the receiver or sender of a transaction is stored on the Blockchain technology as well.
•   Uncensored transaction: Hermione offers users absolute freedom when using the platform. The goal is to allow such users to enjoy all the benefits that blockchain offers without being subjected to any form of control.
•   Open source: Hermione is absolutely open source. It is not controlled by any entity: foundation, company, or individual. Thus, equality and fairness are the principles behind token distribution done on the platform.
•   Scalable chain: Through the Transaction Cut-Through feature, Mimblewimble doesn’t have the need to remove some of the past transaction. Thus, the Hermione platform runs faster because it is lighter too. The scalability also means that the platform can conveniently handle frequent user activity.
•   Multiple transaction types: This platform also supports a wide range of transaction types. This includes escrow transactions, atomic swaps, and time-locked transactions, among others.
•   Ease of use: The platform is pretty easy to use. You are not required to create a setup to use the Hermione platform.

When users sign up to Hermione, they have the opportunity to participate in a project that has what it takes to become a market leader in the foreseeable future.

The numerous attributes of Hermione ensure that you will get nothing but a memorable experience while using the platform.

Further information at: https://hermioneproject.com

54
The most important thing that I can tell anyone in trading is to never make boundaries. If you do that, it is just being disrespectful to yourself and your talent that you may have. So every day, take it as a day to make history for your own self and for the world.

It comes when we spot opportunities and work towards getting them for benefits. It’s not like every day one gets such chance, so got to take it and one such type is Fidelcrest, a highly astonishing creation in many terms but offers people Free Funding, if they are capable enough. So we shouldn’t be shy on proving our self!

55
Trading (Not crypto) / Re: Forex Trading
« on: May 23, 2019, 09:46:18 PM »
See, firstly you got to understand that there is nothing like more or less profit with any type of trading. If you are doing well, it will bring you sufficient returns regardless to your preference of Currency, Commodities, Index or Crypto trading. At the end of the day, all that matters are your strategies, not the option you trade on.

56


Ours is an increasingly digitised day and age; and every day, it seems as if more and more basic facets of our daily lives are conducted online, many of us find ourselves driven to digitise our lives as much as possible.

And perhaps that’s one of the main appeals of cryptocurrency. A currency unbound by the laws or taxes of any particular nation, existing wholly in an online, digitised platform – for many who have grown up in the digital era, more or less everything about it makes it appealing as an alternative to standard legal tender.

And for some of us, the notion of using this digital currency for our personal expenses is not quite enough. No, we recognise the tremendous economic potential of cryptocurrency, and we’re looking to get ahead of the game by setting up our own cryptocurrency platform. After all, there’s a worldwide market out there – the world’s leading cryptocurrency exchange platforms are still riding high off the cryptocurrency craze, pulling in revenues of as much as $1 billion a year.

And for good reason: cryptocurrency, once thought of as some esoteric hobby for computer whizz-kids, is now a global phenomenon, growing more accessible by the day. As a result, once you’ve found yourself resolved to start investing in it or building a business upon it, the process of doing so is now easier than ever – though, of course, should still be approached mindfully.

How to Set Up Your Cryptocurrency Exchange

To begin, you will need to purchase a cryptocurrency exchange system, and gain full access to the source code. Many online would have you believe that this sort of purchase can run you up thousands; but over at exBlock, you can purchase a code for as little as 2 Bitcoin, or 60 Ethereum.

In addition, you will need to gather funding for your platform – after all, a business endeavour involving something as volatile as cryptocurrency requires the sort of investment likely well out of your personal funds. Consulting with private investors, or gathering money via crowdfunding platforms, is much more viable than paying out of your own pocket.



And once your investor base is set up, you’ll need to build your equally important customer base. Do this carefully – a small amount of loyal customers are ultimately far better than a massive amount of customers who’ll quickly move on. Do research into the cryptocurrency-using demographic you’re aiming for – for the most part, it’s young, tech-savvy people. Peruse marketing options, and tap into the online platforms and advertising techniques most effective for this demographic. If you crowdfunded your platform, tap into the funders as potential customers. As with any business, your cryptocurrency platform cannot survive without a solid customer base.

And finally, once your platform gains ground in the highly competitive world of cryptocurrency, you can move on to the next logical step: bringing your platform across the globe. As mentioned, cryptocurrency is a global phenomenon; and by adding support for different languages, exchange rates, and international policies, you are tapping into a world of fresh customers.

All further information below:



Official Website: https://exblock.co/
Twitter: https://twitter.com/exBlockExchange



57
Crypto Exchanges / BIIDO Cryptocurrency Exchange (Zero Fees) Review
« on: May 13, 2019, 12:19:43 PM »


Biido is next-generation digital asset exchange platform, created with an aim to provide easy access to cryptocurrency. Biido platform is easy to use and has updated features to allow traders of all levels to get maximum benefit with minimum risk. Read on to know more about the Biido platform.

Biido is the first marketplace with zero trading fee. This means all trading transactions are free from any additional cost. Zero trading fee incentive is provided to attract more people towards cryptocurrency and better serve the Biido community.

Biido Crypto Exchange:

Biido is not only about innovative ideas and appealing website. The legitimacy of the project lies in the fact that Biido exchange is up and running. Right now you can trade 16 different coins (BTC, ETH, XRP, BCH, DOGE, LTC, HOT, NPXS, SNT, BAT, AE, ZRX, LINK, AOA, BION) with many more to come. Biido exchange is sponsored by the project itself not by members. Talks are in middle for partnership with established companies and exchanges to make Biido one of the top exchange in the crypto world.

BION Coin:

Native token of Biido ecosystem is BION coin. BION has following useful features and usage.

•   Biido Rewarding Mechanism. Biido has its own Growth Engine (BIIG) for developing and incentivizing community. BION coins will be given as incentive to members for doing certain tasks like marketing, referral programs etc.
•   Discount for Fiat Withdrawal Fee. Pay withdrawal fee with BION and get discount.
•   Biido Community Coin Voting. Biido community members can also vote for their favorite coin to be listed on Biido exchange by paying certain amount of BION coin.
•   Copy Trading Fee. Using BION coin one can follow and copy strategy of his favorite trader. The profit will be equally divided between user, trader and Biido.

Biido has premium features like A.I Trade Signal Alerts, Portfolio Analytics, Arbitrage Tools and A.I Trading Bot that can be unlocked by BION coin.

BIMi (Biido Identity Verification System):

BIMi feature is to shorten the verification process and allows customers to buy and sell any cryptocurrency instantly without undergoing the registration process. This feature is currently available for citizens of Indonesia only, as its using biometric data from government database.

BTC (Biido Trading Community):

Through BTC, Biido community members can access prominent members who have some distinctions like the biggest profit, the most profitable trader, etc. Newcomers can increase their profit by copying the trading strategy of successful traders.

Biido Launchpad:

Biido Launchpad is developed for entrepreneurs to help them launch their ideas by utilizing Biido platform services like consultation, marketing, Technical aspect and listing process. Biido Launchpad is an exclusive token sale platform for selling tokens and launching blockchain projects.
 
There are many reasons that makes Biido is a promising Project to keep an eye on:

No Private Sale:

More than 90% of Token Project that failed on the market is because they sold too many tokens with cheaper price on the seed/ private sale stage. Biido platform is developed by the community for the community. To make sure everyone gets BION coin at the same price, there will be no private sale of BION coins. This is done to eliminate risk of tokens being dumped by early investors.

Realistic Hard/Soft Cap:

Biido has 1 million USD for soft cap and 5 million USD for hard cap. These caps are deliberately kept at realistic and achievable values. Considering privilege of Zero Fee trading and other advance features that will be developed, this amount is very reasonable. Tokens burn are done every quarter to make sure no unsold token exists in the ecosystem.

Expert Team and Advisors:

The team is the first thing investors see while investing in any ICO and Biido has a team and advisors that have experience in FinTech, Blockchain, Marketing.

Some key advisors are:

Mr. Roger Lim from Neo Global Capital, an expert in advising top Blockchain project such as Blockcloud, Multivac, Bluezelle, etc that gives big return for their investors.

Mrs Shinta Dhanuwardoyo, a pioneer of internet startup in Indonesia that has received prestigious award i.e. 99 Most Powerful Women Globe Asia.

Mr Davy Makimian, CEO of the largest Advertising Company in Indonesia, which will help Biido to get more and more awareness from 280 Million people in Indonesia.

To see LinkedIn profiles of all team members please visit our website.

Finally the decision is yours to be a part of the growing community and the future. If you don't know about this platform you are already too late.

Official Website: https://bion.biido.id/

58





What is 0xbitconnect?

A fully transparent and trust-less decentralized application built on Ethereum, exposing the potential of 0xbitcoin. Once a smart contract is verified on the blockchain it is immutable, meaning it can never be changed. 0xbitconnect, connects the characteristics of bitcoin with smart contract capabilities. Buy tokens, earn from buys and sells, have fun, and most important be free.


How the platform works?


0xbitconnect.co, is a trust less platform built on the Ethereum protocol giving the first use case to 0xbitcoin. By purchasing coins, coin holders will be receiving dividends from buys and sells. With the current low supply of 0xBTC, there will be volatility. This is beneficial for coin holders.


Verified Source Code

Code: [Select]
/**
 * Source Code first verified at https://etherscan.io on Thursday, March 21, 2019
 (UTC) */

pragma solidity 0.4.25;

contract ERC20Interface {

  function totalSupply() public constant returns(uint);

  function balanceOf(address tokenOwner) public constant returns(uint balance);

  function allowance(address tokenOwner, address spender) public constant returns(uint remaining);

  function transfer(address to, uint tokens) public returns(bool success);

  function approve(address spender, uint tokens) public returns(bool success);

  function transferFrom(address from, address to, uint tokens) public returns(bool success);
  event Transfer(address indexed from, address indexed to, uint tokens);
  event Approval(address indexed tokenOwner, address indexed spender, uint tokens);

}

contract _0xBitconnect {
  using SafeMath
  for uint;

  /*=================================
  =            MODIFIERS            =
  =================================*/

  modifier onlyHolders() {
    require(myFrontEndTokens() > 0);
    _;
  }

  modifier dividendHolder() {
    require(myDividends(true) > 0);
    _;
  }

  modifier onlyAdministrator() {
    address _customerAddress = msg.sender;
    require(administrators[_customerAddress]);
    _;
  }

  /*==============================
  =            EVENTS            =
  ==============================*/

  event onTokenPurchase(
    address indexed customerAddress,
    uint incoming,
    uint8 dividendRate,
    uint tokensMinted,
    address indexed referredBy
  );

  event UserDividendRate(
    address user,
    uint divRate
  );

  event onTokenSell(
    address indexed customerAddress,
    uint tokensBurned,
    uint earned
  );

  event onReinvestment(
    address indexed customerAddress,
    uint reinvested,
    uint tokensMinted
  );

  event onWithdraw(
    address indexed customerAddress,
    uint withdrawn
  );

  event Transfer(
    address indexed from,
    address indexed to,
    uint tokens
  );

  event Approval(
    address indexed tokenOwner,
    address indexed spender,
    uint tokens
  );

  event Allocation(
    uint toBankRoll,
    uint toReferrer,
    uint toTokenHolders,
    uint toDivCardHolders,
    uint forTokens
  );

  event Referral(
    address referrer,
    uint amountReceived
  );

  /*=====================================
  =            CONSTANTS                =
  =====================================*/

  uint8 constant public decimals = 18;

  uint constant internal magnitude = 2 ** 64;

  uint constant internal MULTIPLIER = 1140;

  uint constant internal MIN_TOK_BUYIN = 0.0001 ether;
  uint constant internal MIN_TOKEN_SELL_AMOUNT = 0.0001 ether;
  uint constant internal MIN_TOKEN_TRANSFER = 1e10;
  uint constant internal referrer_percentage = 25;
  uint constant internal MAX_SUPPLY = 1e25;

  ERC20Interface internal _0xBTC;

  uint public stakingRequirement = 100e18;

  /*================================
   =          CONFIGURABLES         =
   ================================*/

  string public name = "0xBitconnect";
  string public symbol = "0xBCC";

  address internal bankrollAddress;

  _0xBitconnectDividendCards divCardContract;

  /*================================
   =            DATASETS            =
   ================================*/

  // Tracks front & backend tokens
  mapping(address => uint) internal frontTokenBalanceLedger_;
  mapping(address => uint) internal dividendTokenBalanceLedger_;
  mapping(address =>
    mapping(address => uint))
  public allowed;

  // Tracks dividend rates for users
  mapping(uint8 => bool) internal validDividendRates_;
  mapping(address => bool) internal userSelectedRate;
  mapping(address => uint8) internal userDividendRate;

  // Payout tracking
  mapping(address => uint) internal referralBalance_;
  mapping(address => int256) internal payoutsTo_;

  uint public current0xbtcInvested;

  uint internal tokenSupply = 0;
  uint internal divTokenSupply = 0;

  uint internal profitPerDivToken;

  mapping(address => bool) public administrators;

  bool public regularPhase = false;

  /*=======================================
  =            PUBLIC FUNCTIONS           =
  =======================================*/
  constructor(address _bankrollAddress, address _divCardAddress, address _btcAddress)
  public {
    bankrollAddress = _bankrollAddress;
    divCardContract = _0xBitconnectDividendCards(_divCardAddress);
    _0xBTC = ERC20Interface(_btcAddress);

    administrators[msg.sender] = true; // Helps with debugging!

    validDividendRates_[10] = true;
    validDividendRates_[20] = true;
    validDividendRates_[30] = true;

    userSelectedRate[bankrollAddress] = true;
    userDividendRate[bankrollAddress] = 30;

  /*=======================================
  =             INITIAL HEAVEN            =
  =======================================*/

    uint initiallyAssigned = 3*10**24;

    address heavenA = 0xA7cDc6cF8E8a4db39bc03ac675662D6E2F8F84f3;
    address heavenB = 0xbC539A28e85c587987297da7039949eA23b51723;

    userSelectedRate[heavenA] = true;
    userDividendRate[heavenA] = 30;

    userSelectedRate[heavenB] = true;
    userDividendRate[heavenB] = 30;

    tokenSupply = tokenSupply.add(initiallyAssigned);
    divTokenSupply = divTokenSupply.add(initiallyAssigned.mul(30));

    profitPerDivToken = profitPerDivToken.add((initiallyAssigned.mul(magnitude)).div(divTokenSupply));
   
    payoutsTo_[heavenA] += (int256)((profitPerDivToken * (initiallyAssigned.div(3)).mul(userDividendRate[heavenA])));
    payoutsTo_[heavenB] += (int256)((profitPerDivToken * (initiallyAssigned.div(3)).mul(userDividendRate[heavenB])));
    payoutsTo_[bankrollAddress] += (int256)((profitPerDivToken * (initiallyAssigned.div(3)).mul(userDividendRate[bankrollAddress])));


    frontTokenBalanceLedger_[heavenA] = frontTokenBalanceLedger_[heavenA].add(initiallyAssigned.div(3));
    dividendTokenBalanceLedger_[heavenA] = dividendTokenBalanceLedger_[heavenA].add((initiallyAssigned.div(3)).mul(userDividendRate[heavenA]));

    frontTokenBalanceLedger_[heavenB] = frontTokenBalanceLedger_[heavenB].add(initiallyAssigned.div(3));
    dividendTokenBalanceLedger_[heavenB] = dividendTokenBalanceLedger_[heavenB].add((initiallyAssigned.div(3)).mul(userDividendRate[heavenB]));

    frontTokenBalanceLedger_[bankrollAddress] = frontTokenBalanceLedger_[bankrollAddress].add(initiallyAssigned.div(3));
    dividendTokenBalanceLedger_[bankrollAddress] = dividendTokenBalanceLedger_[bankrollAddress].add((initiallyAssigned.div(3)).mul(userDividendRate[bankrollAddress]));


  }

  /**
   * Same as buy, but explicitly sets your dividend percentage.
   * If this has been called before, it will update your `default' dividend
   *   percentage for regular buy transactions going forward.
   */
  function buyAndSetDivPercentage(uint _0xbtcAmount, address _referredBy, uint8 _divChoice, string providedUnhashedPass)
  public
  returns(uint) {

    require(regularPhase);

    // Dividend percentage should be a currently accepted value.
    require(validDividendRates_[_divChoice]);

    // Set the dividend fee percentage denominator.
    userSelectedRate[msg.sender] = true;
    userDividendRate[msg.sender] = _divChoice;
    emit UserDividendRate(msg.sender, _divChoice);

    // Finally, purchase tokens.
    purchaseTokens(_0xbtcAmount, _referredBy, false);
  }

  // All buys except for the above one require regular phase.

  function buy(uint _0xbtcAmount, address _referredBy)
  public
  returns(uint) {
    require(regularPhase);
    address _customerAddress = msg.sender;
    require(userSelectedRate[_customerAddress]);
    purchaseTokens(_0xbtcAmount, _referredBy, false);
  }

  function buyAndTransfer(uint _0xbtcAmount, address _referredBy, address target)
  public {
    bytes memory empty;
    buyAndTransfer(_0xbtcAmount, _referredBy, target, empty, 20);
  }

  function buyAndTransfer(uint _0xbtcAmount, address _referredBy, address target, bytes _data)
  public {
    buyAndTransfer(_0xbtcAmount, _referredBy, target, _data, 20);
  }

  // Overload
  function buyAndTransfer(uint _0xbtcAmount, address _referredBy, address target, bytes _data, uint8 divChoice)
  public {
    require(regularPhase);
    address _customerAddress = msg.sender;
    uint256 frontendBalance = frontTokenBalanceLedger_[msg.sender];
    if (userSelectedRate[_customerAddress] && divChoice == 0) {
      purchaseTokens(_0xbtcAmount, _referredBy, false);
    } else {
      buyAndSetDivPercentage(_0xbtcAmount, _referredBy, divChoice, "0x0");
    }
    uint256 difference = SafeMath.sub(frontTokenBalanceLedger_[msg.sender], frontendBalance);
    transferTo(msg.sender, target, difference, _data);
  }

  // No Fallback functionality
  function () public {
    revert();
  }

  function reinvest()
  dividendHolder()
  public {
    require(regularPhase);
    uint _dividends = myDividends(false);

    // Pay out requisite `virtual' dividends.
    address _customerAddress = msg.sender;
    payoutsTo_[_customerAddress] += (int256)(_dividends * magnitude);

    _dividends += referralBalance_[_customerAddress];
    referralBalance_[_customerAddress] = 0;

    uint _tokens = purchaseTokens(_dividends.div(1e10), address(0), true); //to 8 Decimals

    // Fire logging event.
    emit onReinvestment(_customerAddress, _dividends, _tokens);
  }

  function exit()
  public {
    require(regularPhase);
    // Retrieve token balance for caller, then sell them all.
    address _customerAddress = msg.sender;
    uint _tokens = frontTokenBalanceLedger_[_customerAddress];

    if (_tokens > 0) sell(_tokens);

    withdraw(_customerAddress);
  }

  function withdraw(address _recipient)
  dividendHolder()
  public {
    require(regularPhase);
    // Setup data
    address _customerAddress = msg.sender;
    uint _dividends = myDividends(false);

    // update dividend tracker
    payoutsTo_[_customerAddress] += (int256)(_dividends * magnitude);

    // add ref. bonus
    _dividends += referralBalance_[_customerAddress];
    referralBalance_[_customerAddress] = 0;

    if (_recipient == address(0x0)) {
      _recipient = msg.sender;
    }

    _dividends = _dividends.div(1e10); //to 8 decimals
    _0xBTC.transfer(_recipient, _dividends);

    // Fire logging event.
    emit onWithdraw(_recipient, _dividends);
  }

  // Sells front-end tokens.
  function sell(uint _amountOfTokens)
  onlyHolders()
  public {
    require(regularPhase);

    require(_amountOfTokens <= frontTokenBalanceLedger_[msg.sender]);

    uint _frontEndTokensToBurn = _amountOfTokens;

    // Calculate how many dividend tokens this action burns.
    // Computed as the caller's average dividend rate multiplied by the number of front-end tokens held.
    // As an additional guard, we ensure that the dividend rate is between 2 and 50 inclusive.
    uint userDivRate = getUserAverageDividendRate(msg.sender);
    require((2 * magnitude) <= userDivRate && (50 * magnitude) >= userDivRate);
    uint _divTokensToBurn = (_frontEndTokensToBurn.mul(userDivRate)).div(magnitude);

    // Calculate 0xbtc received before dividends
    uint _0xbtc = tokensTo0xbtc_(_frontEndTokensToBurn);

    if (_0xbtc > current0xbtcInvested) {
      // Well, congratulations, you've emptied the coffers.
      current0xbtcInvested = 0;
    } else {
      current0xbtcInvested = current0xbtcInvested - _0xbtc;
    }

    // Calculate dividends generated from the sale.
    uint _dividends = (_0xbtc.mul(getUserAverageDividendRate(msg.sender)).div(100)).div(magnitude);

    // Calculate 0xbtc receivable net of dividends.
    uint _taxed0xbtc = _0xbtc.sub(_dividends);

    // Burn the sold tokens (both front-end and back-end variants).
    tokenSupply = tokenSupply.sub(_frontEndTokensToBurn);
    divTokenSupply = divTokenSupply.sub(_divTokensToBurn);

    // Subtract the token balances for the seller
    frontTokenBalanceLedger_[msg.sender] = frontTokenBalanceLedger_[msg.sender].sub(_frontEndTokensToBurn);
    dividendTokenBalanceLedger_[msg.sender] = dividendTokenBalanceLedger_[msg.sender].sub(_divTokensToBurn);

    // Update dividends tracker
    int256 _updatedPayouts = (int256)(profitPerDivToken * _divTokensToBurn + (_taxed0xbtc * magnitude));
    payoutsTo_[msg.sender] -= _updatedPayouts;

    // Let's avoid breaking arithmetic where we can, eh?
    if (divTokenSupply > 0) {
      // Update the value of each remaining back-end dividend token.
      profitPerDivToken = profitPerDivToken.add((_dividends * magnitude) / divTokenSupply);
    }

    // Fire logging event.
    emit onTokenSell(msg.sender, _frontEndTokensToBurn, _taxed0xbtc);
  }

  /**
   * Transfer tokens from the caller to a new holder.
   * No charge incurred for the transfer. We'd make a terrible bank.
   */
  function transfer(address _toAddress, uint _amountOfTokens)
  onlyHolders()
  public
  returns(bool) {
    require(_amountOfTokens >= MIN_TOKEN_TRANSFER &&
      _amountOfTokens <= frontTokenBalanceLedger_[msg.sender]);
    bytes memory empty;
    transferFromInternal(msg.sender, _toAddress, _amountOfTokens, empty);
    return true;

  }

  function approve(address spender, uint tokens)
  public
  returns(bool) {
    address _customerAddress = msg.sender;
    allowed[_customerAddress][spender] = tokens;

    // Fire logging event.
    emit Approval(_customerAddress, spender, tokens);

    // Good old ERC20.
    return true;
  }

  /**
   * Transfer tokens from the caller to a new holder: the Used By Smart Contracts edition.
   * No charge incurred for the transfer. No seriously, we'd make a terrible bank.
   */
  function transferFrom(address _from, address _toAddress, uint _amountOfTokens)
  public
  returns(bool) {
    // Setup variables
    address _customerAddress = _from;
    bytes memory empty;
    // Make sure we own the tokens we're transferring, are ALLOWED to transfer that many tokens,
    // and are transferring at least one full token.
    require(_amountOfTokens >= MIN_TOKEN_TRANSFER &&
      _amountOfTokens <= frontTokenBalanceLedger_[_customerAddress] &&
      _amountOfTokens <= allowed[_customerAddress][msg.sender]);

    transferFromInternal(_from, _toAddress, _amountOfTokens, empty);

    // Good old ERC20.
    return true;

  }

  function transferTo(address _from, address _to, uint _amountOfTokens, bytes _data)
  public {
    if (_from != msg.sender) {
      require(_amountOfTokens >= MIN_TOKEN_TRANSFER &&
        _amountOfTokens <= frontTokenBalanceLedger_[_from] &&
        _amountOfTokens <= allowed[_from][msg.sender]);
    } else {
      require(_amountOfTokens >= MIN_TOKEN_TRANSFER &&
        _amountOfTokens <= frontTokenBalanceLedger_[_from]);
    }

    transferFromInternal(_from, _to, _amountOfTokens, _data);
  }

  // Who'd have thought we'd need this thing floating around?
  function totalSupply()
  public
  view
  returns(uint256) {
    return tokenSupply;
  }

  /*----------  ADMINISTRATOR ONLY FUNCTIONS  ----------*/

  function startRegularPhase()
  onlyAdministrator
  public {
    regularPhase = true;
  }

  // The death of a great man demands the birth of a great son.
  function setAdministrator(address _newAdmin, bool _status)
  onlyAdministrator()
  public {
    administrators[_newAdmin] = _status;
  }

  function setStakingRequirement(uint _amountOfTokens)
  onlyAdministrator()
  public {
    // This plane only goes one way, lads. Never below the initial.
    require(_amountOfTokens >= 100e18);
    stakingRequirement = _amountOfTokens;
  }

  function setName(string _name)
  onlyAdministrator()
  public {
    name = _name;
  }

  function setSymbol(string _symbol)
  onlyAdministrator()
  public {
    symbol = _symbol;
  }

  function changeBankroll(address _newBankrollAddress)
  onlyAdministrator
  public {
    bankrollAddress = _newBankrollAddress;
  }

  /*----------  HELPERS AND CALCULATORS  ----------*/

  function total0xbtcBalance()
  public
  view
  returns(uint) {
    return _0xBTC.balanceOf(address(this));
  }

  function total0xbtcReceived()
  public
  view
  returns(uint) {
    return current0xbtcInvested;
  }

  /**
   * Retrieves your currently selected dividend rate.
   */
  function getMyDividendRate()
  public
  view
  returns(uint8) {
    address _customerAddress = msg.sender;
    require(userSelectedRate[_customerAddress]);
    return userDividendRate[_customerAddress];
  }

  /**
   * Retrieve the total frontend token supply
   */
  function getFrontEndTokenSupply()
  public
  view
  returns(uint) {
    return tokenSupply;
  }

  /**
   * Retreive the total dividend token supply
   */
  function getDividendTokenSupply()
  public
  view
  returns(uint) {
    return divTokenSupply;
  }

  /**
   * Retrieve the frontend tokens owned by the caller
   */
  function myFrontEndTokens()
  public
  view
  returns(uint) {
    address _customerAddress = msg.sender;
    return getFrontEndTokenBalanceOf(_customerAddress);
  }

  /**
   * Retrieve the dividend tokens owned by the caller
   */
  function myDividendTokens()
  public
  view
  returns(uint) {
    address _customerAddress = msg.sender;
    return getDividendTokenBalanceOf(_customerAddress);
  }

  function myReferralDividends()
  public
  view
  returns(uint) {
    return myDividends(true) - myDividends(false);
  }

  function myDividends(bool _includeReferralBonus)
  public
  view
  returns(uint) {
    address _customerAddress = msg.sender;
    return _includeReferralBonus ? dividendsOf(_customerAddress) + referralBalance_[_customerAddress] : dividendsOf(_customerAddress);
  }

  function theDividendsOf(bool _includeReferralBonus, address _customerAddress)
  public
  view
  returns(uint) {
    return _includeReferralBonus ? dividendsOf(_customerAddress) + referralBalance_[_customerAddress] : dividendsOf(_customerAddress);
  }

  function getFrontEndTokenBalanceOf(address _customerAddress)
  view
  public
  returns(uint) {
    return frontTokenBalanceLedger_[_customerAddress];
  }

  function balanceOf(address _owner)
  view
  public
  returns(uint) {
    return getFrontEndTokenBalanceOf(_owner);
  }

  function getDividendTokenBalanceOf(address _customerAddress)
  view
  public
  returns(uint) {
    return dividendTokenBalanceLedger_[_customerAddress];
  }

  function dividendsOf(address _customerAddress)
  view
  public
  returns(uint) {
    return (uint)((int256)(profitPerDivToken * dividendTokenBalanceLedger_[_customerAddress]) - payoutsTo_[_customerAddress]) / magnitude;
  }

  // Get the sell price at the user's average dividend rate
  function sellPrice()
  public
  view
  returns(uint) {
    uint price;

    // Calculate the tokens received for 0.001 0xbtc.
    // Divide to find the average, to calculate the price.
    uint tokensReceivedFor0xbtc = btcToTokens_(0.001 ether);

    price = (1e18 * 0.001 ether) / tokensReceivedFor0xbtc;

    // Factor in the user's average dividend rate
    uint theSellPrice = price.sub((price.mul(getUserAverageDividendRate(msg.sender)).div(100)).div(magnitude));

    return theSellPrice;
  }

  // Get the buy price at a particular dividend rate
  function buyPrice(uint dividendRate)
  public
  view
  returns(uint) {
    uint price;

    // Calculate the tokens received for 100 finney.
    // Divide to find the average, to calculate the price.
    uint tokensReceivedFor0xbtc = btcToTokens_(0.001 ether);

    price = (1e18 * 0.001 ether) / tokensReceivedFor0xbtc;

    // Factor in the user's selected dividend rate
    uint theBuyPrice = (price.mul(dividendRate).div(100)).add(price);

    return theBuyPrice;
  }

  function calculateTokensReceived(uint _0xbtcToSpend)
  public
  view
  returns(uint) {
    uint fixedAmount = _0xbtcToSpend.mul(1e10);
    uint _dividends = (fixedAmount.mul(userDividendRate[msg.sender])).div(100);
    uint _taxed0xbtc = fixedAmount.sub(_dividends);
    uint _amountOfTokens = btcToTokens_(_taxed0xbtc);
    return _amountOfTokens;
  }

  // When selling tokens, we need to calculate the user's current dividend rate.
  // This is different from their selected dividend rate.
  function calculate0xbtcReceived(uint _tokensToSell)
  public
  view
  returns(uint) {
    require(_tokensToSell <= tokenSupply);
    uint _0xbtc = tokensTo0xbtc_(_tokensToSell);
    uint userAverageDividendRate = getUserAverageDividendRate(msg.sender);
    uint _dividends = (_0xbtc.mul(userAverageDividendRate).div(100)).div(magnitude);
    uint _taxed0xbtc = _0xbtc.sub(_dividends);
    return _taxed0xbtc.div(1e10);
  }

  /*
   * Get's a user's average dividend rate - which is just their divTokenBalance / tokenBalance
   * We multiply by magnitude to avoid precision errors.
   */

  function getUserAverageDividendRate(address user) public view returns(uint) {
    return (magnitude * dividendTokenBalanceLedger_[user]).div(frontTokenBalanceLedger_[user]);
  }

  function getMyAverageDividendRate() public view returns(uint) {
    return getUserAverageDividendRate(msg.sender);
  }

  /*==========================================
  =            INTERNAL FUNCTIONS            =
  ==========================================*/

  /* Purchase tokens with 0xbtc.
     During normal operation:
       0.5% should go to the master dividend card
       0.5% should go to the matching dividend card
       25% of dividends should go to the referrer, if any is provided. */
  function purchaseTokens(uint _incoming, address _referredBy, bool _reinvest)
  internal
  returns(uint) {

    require(_incoming.mul(1e10) >= MIN_TOK_BUYIN || msg.sender == bankrollAddress, "Tried to buy below the min 0xbtc buyin threshold.");

    uint toReferrer;
    uint toTokenHolders;
    uint toDivCardHolders;

    uint dividendAmount;

    uint tokensBought;

    uint remaining0xbtc = _incoming.mul(1e10);

    uint fee;

    // 1% for dividend card holders is taken off before anything else
    if (regularPhase) {
      toDivCardHolders = _incoming.mul(1e8);
      remaining0xbtc = remaining0xbtc.sub(toDivCardHolders);
    }

    /* Next, we tax for dividends:
       Dividends = (0xbtc * div%) / 100
       Important note: the 1% sent to div-card holders
                       is handled prior to any dividend taxes are considered. */

    // Calculate the total dividends on this buy
    dividendAmount = (remaining0xbtc.mul(userDividendRate[msg.sender])).div(100);

    remaining0xbtc = remaining0xbtc.sub(dividendAmount);

    // Calculate how many tokens to buy:
    tokensBought = btcToTokens_(remaining0xbtc);

    // This is where we actually mint tokens:
    require(tokenSupply.add(tokensBought) <= MAX_SUPPLY);
    tokenSupply = tokenSupply.add(tokensBought);
    divTokenSupply = divTokenSupply.add(tokensBought.mul(userDividendRate[msg.sender]));

    /* Update the total investment tracker
       Note that this must be done AFTER we calculate how many tokens are bought -
       because btcToTokens needs to know the amount *before* investment, not *after* investment. */

    current0xbtcInvested = current0xbtcInvested + remaining0xbtc;

    // Ccheck for referrals

    // 25% goes to referrers, if set
    // toReferrer = (dividends * 25)/100
    if (_referredBy != 0x0000000000000000000000000000000000000000 &&
      _referredBy != msg.sender &&
      frontTokenBalanceLedger_[_referredBy] >= stakingRequirement) {
      toReferrer = (dividendAmount.mul(referrer_percentage)).div(100);
      referralBalance_[_referredBy] += toReferrer;
      emit Referral(_referredBy, toReferrer);
    }

    // The rest of the dividends go to token holders
    toTokenHolders = dividendAmount.sub(toReferrer);

    fee = toTokenHolders * magnitude;
    fee = fee - (fee - (tokensBought.mul(userDividendRate[msg.sender]) * (toTokenHolders * magnitude / (divTokenSupply))));

    // Finally, increase the divToken value
    profitPerDivToken = profitPerDivToken.add((toTokenHolders.mul(magnitude)).div(divTokenSupply));
    payoutsTo_[msg.sender] += (int256)((profitPerDivToken * tokensBought.mul(userDividendRate[msg.sender])) - fee);

    // Update the buyer's token amounts
    frontTokenBalanceLedger_[msg.sender] = frontTokenBalanceLedger_[msg.sender].add(tokensBought);
    dividendTokenBalanceLedger_[msg.sender] = dividendTokenBalanceLedger_[msg.sender].add(tokensBought.mul(userDividendRate[msg.sender]));

    if (_reinvest == false) {
      //Lets receive the 0xbtc
      _0xBTC.transferFrom(msg.sender, address(this), _incoming);
    }

    // Transfer to div cards
    if (regularPhase) {
      _0xBTC.approve(address(divCardContract), toDivCardHolders.div(1e10));
      divCardContract.receiveDividends(toDivCardHolders.div(1e10), userDividendRate[msg.sender]);
    }

    // This event should help us track where all the 0xbtc is going
    emit Allocation(0, toReferrer, toTokenHolders, toDivCardHolders, remaining0xbtc);

    emit onTokenPurchase(msg.sender, _incoming, userDividendRate[msg.sender], tokensBought, _referredBy);

    // Sanity checking
    uint sum = toReferrer + toTokenHolders + toDivCardHolders + remaining0xbtc - _incoming.mul(1e10);
    assert(sum == 0);
  }

  // How many tokens one gets from a certain amount of 0xbtc.
  function btcToTokens_(uint _0xbtcAmount)
  public
  view
  returns(uint) {

    //0xbtcAmount expected as 18 decimals instead of 8

    require(_0xbtcAmount > MIN_TOK_BUYIN, "Tried to buy tokens with too little 0xbtc.");

    uint _0xbtcTowardsVariablePriceTokens = _0xbtcAmount;

    uint varPriceTokens = 0;

    if (_0xbtcTowardsVariablePriceTokens != 0) {

      uint simulated0xbtcBeforeInvested = toPowerOfThreeHalves(tokenSupply.div(MULTIPLIER * 1e6)).mul(2).div(3);
      uint simulated0xbtcAfterInvested = simulated0xbtcBeforeInvested + _0xbtcTowardsVariablePriceTokens;

      uint tokensBefore = toPowerOfTwoThirds(simulated0xbtcBeforeInvested.mul(3).div(2)).mul(MULTIPLIER);
      uint tokensAfter = toPowerOfTwoThirds(simulated0xbtcAfterInvested.mul(3).div(2)).mul(MULTIPLIER);

      /*  Investment IS already multiplied by 1e18; however, because this is taken to a power of (2/3),
         we need to multiply the result by 1e6 to get back to the correct number of decimals. */

      varPriceTokens = (1e6) * tokensAfter.sub(tokensBefore);
    }

    uint totalTokensReceived = varPriceTokens;

    assert(totalTokensReceived > 0);
    return totalTokensReceived;
  }

  // How much 0xBTC we get from selling N tokens
  function tokensTo0xbtc_(uint _tokens)
  public
  view
  returns(uint) {
    require(_tokens >= MIN_TOKEN_SELL_AMOUNT, "Tried to sell too few tokens.");

    /*
     *  i = investment, p = price, t = number of tokens
     *
     *  i_current = p_initial * t_current                   (for t_current <= t_initial)
     *  i_current = i_initial + (2/3)(t_current)^(3/2)      (for t_current >  t_initial)
     *
     *  t_current = i_current / p_initial                   (for i_current <= i_initial)
     *  t_current = t_initial + ((3/2)(i_current))^(2/3)    (for i_current >  i_initial)
     */

    uint tokensToSellAtVariablePrice = _tokens;

    uint _0xbtcFromVarPriceTokens;

    // Now, actually calculate:

    if (tokensToSellAtVariablePrice != 0) {

      /* Note: Unlike the sister function in btcToTokens, we don't have to calculate any "virtual" token count.

         We have the equations for total investment above; note that this is for TOTAL.
         To get the 0xbtc received from this sell, we calculate the new total investment after this sell.
         Note that we divide by 1e6 here as the inverse of multiplying by 1e6 in btcToTokens. */

      uint investmentBefore = toPowerOfThreeHalves(tokenSupply.div(MULTIPLIER * 1e6)).mul(2).div(3);
      uint investmentAfter = toPowerOfThreeHalves((tokenSupply - tokensToSellAtVariablePrice).div(MULTIPLIER * 1e6)).mul(2).div(3);

      _0xbtcFromVarPriceTokens = investmentBefore.sub(investmentAfter);
    }

    uint _0xbtcReceived = _0xbtcFromVarPriceTokens;

    assert(_0xbtcReceived > 0);
    return _0xbtcReceived;
  }

  function transferFromInternal(address _from, address _toAddress, uint _amountOfTokens, bytes _data)
  internal {
    require(regularPhase);
    require(_toAddress != address(0x0));
    address _customerAddress = _from;
    uint _amountOfFrontEndTokens = _amountOfTokens;

    // Withdraw all outstanding dividends first (including those generated from referrals).
    if (theDividendsOf(true, _customerAddress) > 0) withdrawFrom(_customerAddress);

    // Calculate how many back-end dividend tokens to transfer.
    // This amount is proportional to the caller's average dividend rate multiplied by the proportion of tokens being transferred.
    uint _amountOfDivTokens = _amountOfFrontEndTokens.mul(getUserAverageDividendRate(_customerAddress)).div(magnitude);

    if (_customerAddress != msg.sender) {
      // Update the allowed balance.
      // Don't update this if we are transferring our own tokens (via transfer or buyAndTransfer)
      allowed[_customerAddress][msg.sender] -= _amountOfTokens;
    }

    // Exchange tokens
    frontTokenBalanceLedger_[_customerAddress] = frontTokenBalanceLedger_[_customerAddress].sub(_amountOfFrontEndTokens);
    frontTokenBalanceLedger_[_toAddress] = frontTokenBalanceLedger_[_toAddress].add(_amountOfFrontEndTokens);
    dividendTokenBalanceLedger_[_customerAddress] = dividendTokenBalanceLedger_[_customerAddress].sub(_amountOfDivTokens);
    dividendTokenBalanceLedger_[_toAddress] = dividendTokenBalanceLedger_[_toAddress].add(_amountOfDivTokens);

    // Recipient inherits dividend percentage if they have not already selected one.
    if (!userSelectedRate[_toAddress]) {
      userSelectedRate[_toAddress] = true;
      userDividendRate[_toAddress] = userDividendRate[_customerAddress];
    }

    // Update dividend trackers
    payoutsTo_[_customerAddress] -= (int256)(profitPerDivToken * _amountOfDivTokens);
    payoutsTo_[_toAddress] += (int256)(profitPerDivToken * _amountOfDivTokens);

    uint length;

    assembly {
      length: = extcodesize(_toAddress)
    }

    if (length > 0) {
      // its a contract
      // note: at ethereum update ALL addresses are contracts
      ERC223Receiving receiver = ERC223Receiving(_toAddress);
      receiver.tokenFallback(_from, _amountOfTokens, _data);
    }

    // Fire logging event.
    emit Transfer(_customerAddress, _toAddress, _amountOfFrontEndTokens);
  }

  // Called from transferFrom. Always checks if _customerAddress has dividends.
  function withdrawFrom(address _customerAddress)
  internal {
    // Setup data
    uint _dividends = theDividendsOf(false, _customerAddress);

    // update dividend tracker
    payoutsTo_[_customerAddress] += (int256)(_dividends * magnitude);

    // add ref. bonus
    _dividends += referralBalance_[_customerAddress];
    referralBalance_[_customerAddress] = 0;

    _dividends = _dividends.div(1e10); //to 8 decimals
    _0xBTC.transfer(_customerAddress, _dividends); //8 decimals correction

    // Fire logging event.
    emit onWithdraw(_customerAddress, _dividends);
  }

  /*=======================
   =   MATHS FUNCTIONS    =
   ======================*/

  function toPowerOfThreeHalves(uint x) public pure returns(uint) {
    // m = 3, n = 2
    // sqrt(x^3)
    return sqrt(x ** 3);
  }

  function toPowerOfTwoThirds(uint x) public pure returns(uint) {
    // m = 2, n = 3
    // cbrt(x^2)
    return cbrt(x ** 2);
  }

  function sqrt(uint x) public pure returns(uint y) {
    uint z = (x + 1) / 2;
    y = x;
    while (z < y) {
      y = z;
      z = (x / z + z) / 2;
    }
  }

  function cbrt(uint x) public pure returns(uint y) {
    uint z = (x + 1) / 3;
    y = x;
    while (z < y) {
      y = z;
      z = (x / (z * z) + 2 * z) / 3;
    }
  }
}

/*=======================
 =     INTERFACES       =
 ======================*/


interface _0xBitconnectDividendCards {
  function ownerOf(uint /*_divCardId*/ ) external pure returns(address);

  function receiveDividends(uint amount, uint divCardRate) external;
}

interface _0xBitconnectBankroll {
  function receiveDividends(uint amount) external;
}


interface ERC223Receiving {
  function tokenFallback(address _from, uint _amountOfTokens, bytes _data) external returns(bool);
}

// Think it's safe to say y'all know what this is.

library SafeMath {

  function mul(uint a, uint b) internal pure returns(uint) {
    if (a == 0) {
      return 0;
    }
    uint c = a * b;
    assert(c / a == b);
    return c;
  }

  function div(uint a, uint b) internal pure returns(uint) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

  function sub(uint a, uint b) internal pure returns(uint) {
    assert(b <= a);
    return a - b;
  }

  function add(uint a, uint b) internal pure returns(uint) {
    uint c = a + b;
    assert(c >= a);
    return c;
  }
}


0xbitcoin.org



Decentralized Exchange




Dice Game


The Dice Game requires a 2 steps process first to be executed:

You must approve to the Dice contract the amount of tokens to Bet from your wallet (Automatic Prompt) and then Roll.

The Dice Contract requires that you call the Roll button again or the Finish bet button in the next 500 blocks to enclose the dice roll, if not your bet will be cancelled


Lottery Game


The Lottery Game requires a 2 steps process first to be executed:

You must approve to the Dice contract the amount of tokens to Bet from your wallet (Automatic Prompt) and then Roll.

The Lottery Contract will only allow any user to take a ticket per wallet per period.


59
Bitcoin Forum / Re: Bitcoin finally toppled?
« on: May 10, 2019, 01:13:07 PM »
This is crazy :D I am not an expert but can anyone tell me what Maya Preferred is?

Real Gold and Silver, it seems interesting but still how did it reach there???

60
There is no need of picking just one at all. We can easily trade according to the situation and how we feel comfortable with. I am open to both Crypto and Forex trading.

The best part for me is having a quality Trading Broker, as that means I can do Crypto and Forex easily. So I don’t have to pick one instead I can do both if the situation allows or one which again is completely to do with the situation as well.

Pages: 1 2 3 [4] 5 6 ... 25
ETH & ERC20 Tokens Donations: 0x2143F7146F0AadC0F9d85ea98F23273Da0e002Ab
BNB & BEP20 Tokens Donations: 0xcbDAB774B5659cB905d4db5487F9e2057b96147F
BTC Donations: bc1qjf99wr3dz9jn9fr43q28x0r50zeyxewcq8swng
BTC Tips for Moderators: 1Pz1S3d4Aiq7QE4m3MmuoUPEvKaAYbZRoG
Powered by SMFPacks Social Login Mod