Search content
Sort by

Showing 20 of 63 results by Herr Kaufmann
Post
Topic
Board Новички
Re: Раздача мерита нуждающимся/Есть задания l
by
Herr Kaufmann
on 03/02/2020, 23:03:32 UTC
Доброго времени суток. Пока я раздаю как мерит-сорс, у меня скапливается достаточно личного мерита. Решил потратить часть на сообщество.
Вот пачка заданий от меня.

10- https://medium.com/better-programming/how-to-build-a-bitcoin-dca-chart-with-react-and-recharts-d29523b5427c
Тема в раздел кодеры

Запостил перевод
Post
Topic
Board Кодеры
Re: DCA-стратегия в BTC на React и Recharts
by
Herr Kaufmann
on 03/02/2020, 22:58:26 UTC
Recharts Графика

Наконец-то мы готовы приступить к созданию наших графиков. Recharts компонентов и могут быть заданы множеством способов, но, чтобы начать, мы создадим очень простой график.

Компонент - это компонент-обертка, который получает данные графика в свойстве data и предоставляет их своим потомкам.

В нашем случае, нам нужно передать массив dataArr, созданный выше, в свойство data. Для того, чтобы график вообще отображался, нужно задать свойства высота и ширина, в данном случае высота составит 250, а ширина - 700.

Компонент отображает данные на графике. Свойство dataKey будет выбирать ключ для каждого объекта из объекта dataArr для отображения этих данных на графике.

Помните из написанного выше, что каждый объект из dataArr выглядит примерно так:

Code:
{
  TotalInvested: 400,
  CoinAmount: 1,
  CoinPrice: 380,
  Total: 200,
  date: '1/5/2016'
},
dataarr.js размещен на GitHub

Давайте покажем значение Total, для этого присвоим свойству dataKey значение «Total». Компонент   принимает много других свойств для настройки графика так, как вы хотите. Сейчас давайте зададим stroke, fillOpacity и fill.

Code:
...
import { AreaChart, Area } from "recharts";
...
return (
 

   
              dataKey="Total"
        stroke="none"
        fillOpacity={1}
        fill="#f7931a"
      />
   
 

)
...
AreaChart.js размещен на GitHub

Добавим компонент Graph в App.js, чтобы увидеть AreaChart, созданный выше.

Code:
...
import Graph from "./Graph";
...
let content =
No Data
;
if (coinData && coinData.prices && coinData.prices.length > 0)
  content = (
   

          priceArr={coinData.prices}
      freqInDays={freqInDays}
      amountToInvest={amountToInvest}
    />
          priceArr={coinData.prices}
      freqInDays={freqInDays}
      amountToInvest={amountToInvest}
    />
 

  );
if (isLoading) content =
Loading
;
if (error) content =
{error}
;
...
graph.js размещен на GitHub


Форма компонента может быть изменена при помощи свойства type. Например, присвоим значение "step" свойству type.

Code:
  type="step"
  dataKey="Total"
  stroke="none"
  fillOpacity={1}
  fill="#f7931a"
/>
GitHub]area.js[/url] размещен на GitHub


А теперь попробуем "natural".


.     .     .

Recharts Всплывающей Подсказки

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

Мы можем использовать tooltip, чтобы показать итоговые значения на каждом из интервалов графика. Стиль подсказки настраивается с помощью свойств contentStyle и labelStyle.

Code:
...
import { AreaChart, Tooltip, Area } from "recharts";
...
...

      contentStyle={styles.tooltipWrapper}
    labelStyle={styles.tooltip}
    formatter={value => `${value}`}
  />
      dataKey="Total"
    stroke="none"
    fillOpacity={1}
    fill="#f7931a"
  />

...
const styles = {
  container: {
    maxWidth: 700,
    margin: "0 auto"
  },
  tooltipWrapper: {
    background: "#444444",
    border: "none"
  },
  tooltip: {
    color: "#ebebeb"
  }
};
tooltip.js размещен на GitHub


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

Используем функцию округления ./src/round.js, которую мы создали выше, чтобы округлить значения до двух знаков после запятой. Также добавим символ $ перед значением, чтобы показать единицы измерения.

Code:
  contentStyle={styles.tooltipWrapper}
  labelStyle={styles.tooltip}
  formatter={value => `$${round(value, 2)}`}
/>


.     .     .

Recharts Точек

Свойство dot компонента добавит точки в каждый отдельный фрагмент графика.

Мы можем задать значение "true", чтобы показать точки так, как задано по умолчанию, задать объект с таким стилем отображения точек, каким мы хотим, или задать точки индивидуально. Сейчас добавим объект с простым стилем.

Code:
...
  dataKey="Total"
  stroke="none"
  fillOpacity={1}
  fill="#f7931a"
  dot={{ fill: "white", strokeWidth: 2 }}
/>
...
area.js размещен на GitHub


Также мы можем изменять вид точек при наведении курсора мыши при помощи свойства activeDot.

Code:
...
  dataKey="Total"
  stroke="none"
  fillOpacity={1}
  fill="#f7931a"
  activeDot={{ strokeWidth: 0 }}
/>
...
activeDot.js размещен на GitHub


.     .     .

Recharts оси Y и оси X

Используя компоненты и , мы можем отобразить обе оси для предоставления более полной информации о шкале значений.

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


Но мы хотим показать сами даты на оси Х. Для этого присвоим свойству dataKey свойства значение «date».

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

Code:
...
import {
  AreaChart,
  XAxis,
  YAxis,
  Tooltip,
  Area,
} from "recharts";
...

 
 
  ...

...
axis.js размещен на GitHub


.     .     .

Recharts Нескольких Типов Данных

С помощью Recharts мы можем добавить несколько типов данных в один график для отображения связанных данных на одной временной шкале.

В этом случае мы хотим отобразить CoinAmount, TotalInvested и CoinPrice вместе с Total на одном графике, чтобы увидеть, как все эти данные связаны между собой. Нам нужно будет задать каждой Area свой цвет, чтобы легко их различать, а также добавить прозрачность, чтобы мы могли видеть перекрывающиеся графики.

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

Code:

 
 
      contentStyle={styles.tooltipWrapper}
    labelStyle={styles.tooltip}
    formatter={value => `$${round(value, 2)}`}
  />
      type="linear"
    dataKey="CoinAmount"
    stroke="none"
    fillOpacity={0.4}
    fill="#55efc4"
    activeDot={{ strokeWidth: 0 }}
  />
      type="linear"
    dataKey="Total"
    stroke="none"
    fillOpacity={0.6}
    fill="#f7931a"
    activeDot={{ strokeWidth: 0 }}
  />
      type="linear"
    dataKey="TotalInvested"
    stroke="none"
    fillOpacity={0.6}
    fill="#3498db"
    activeDot={{ strokeWidth: 0 }}
  />
      type="linear"
    dataKey="CoinPrice"
    stroke="none"
    fillOpacity={0.6}
    fill="#e84393"
    activeDot={{ strokeWidth: 0 }}
  />
AreaChart.js размещен на GitHub


Проблема графика в том, что CoinAmount измеряется не в долларах, а в биткоинах, поэтому отображать CoinAmount на этом же графике слегка некорректно.

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

Создаем второй компонент YAxis и задаем свойству yAxisId значение «righyt» и свойству orientation значение «right». Свойство yAxisId позволит нам задать для Area правильную шкалу YAxis шкалу.

Code:

Обновим каждый , чтобы отобразить правильное значение yAxisId, путем определения свойства yAxisId в компоненте .

Code:
...
   type="linear"
  dataKey="CoinAmount"
  stroke="none"
  fillOpacity={0.4}
  fill="#f7931a"
  yAxisId="right"
  activeDot={{ strokeWidth: 0 }}
/>
  type="linear"
  dataKey="Total"
  stroke="none"
  fillOpacity={0.6}
  fill="#f7931a"
  yAxisId="left"
  activeDot={{ strokeWidth: 0 }}
/>
  type="linear"
  dataKey="TotalInvested"
  stroke="none"
  fillOpacity={0.6}
  fill="#3498db"
  yAxisId="left"
  activeDot={{ strokeWidth: 0 }}
/>
  type="linear"
  dataKey="CoinValue"
  stroke="none"
  fillOpacity={0.6}
  fill="#e84393"
  yAxisId="left"
  activeDot={{ strokeWidth: 0 }}
/>
...
area.js размещен на GitHub


У библиотеки Recharts множество других настроек, вы можете познакомиться с ними на Recharts docs.

.     .     .

Recharts Адаптации Размеров Экрана

График не будет автоматически адаптироваться для экранов с меньшим размером, потому что параметры высоты и ширины заданы статично. Однако, это можно легко исправить с помощью Recharts.

Оберните компонент в , удалите высоту и ширину из и задйте новое значение высоты компоненту .

Code:
...
import {
  AreaChart,
  XAxis,
  YAxis,
  Tooltip,
  Area,
  ResponsiveContainer
} from "recharts";
...

 
    ...
 

...
ResponsiveContainer.js размещен на GitHub


.     .     .
Вывод

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

Если вам интересно, как добавить какие-либо из этих дополнительных опций, ознакомьтесь с репозиторием проекта crypto-dca на GitHub.

Recharts делает создание графиков с помощью React и D3 невероятно легким, в то же самое время предоставляя широкий спектр настроек.

Однако, библиотека Recharts обладает гораздо большими возможностями, чем может быть охвачено в рамках одного проекта. Надеюсь, этот пример поможет вам начать.
Post
Topic
Board Кодеры
Merits 4 from 1 user
Topic OP
DCA-стратегия в BTC на React и Recharts
by
Herr Kaufmann
on 03/02/2020, 22:55:44 UTC
⭐ Merited by Ratimov (4)
Перевод статьи: How To Build a Bitcoin Dollar Cost Average Chart With React and Recharts

Как создать график инвестиционной стратегии DCA в биткоин, используя React и Recharts

Строим графики, чтобы разобраться с нашими финансовыми вложениями


Примечание: не рассматривайте эту статью как совет по инвестированию. Статья предназначена исключительно для образовательных целей. Better Programming, его персонал и владельцы не несут ответственности за ваши инвестиционные решения.

Recharts - это графическая библиотека, которая представляет из себя множество декларативных React-компонентов для построения графиков с помощью D3. Доступны десять настраиваемых типов графика, а также вспомогательные компоненты.

В этом туториале мы создадим несколько AreaCharts для отображения стоимости портфеля, общей суммы монет и общей суммы инвестиций за определенный временной период, на котором осуществляем dollar cost averaging биткоина.

Посмотрите на www.cryptodca.org интерактивный пример графика, который мы будем строить. Посетите GitHub проекта, чтобы узнать больше.

.     .     .

Разделы

  •    Построение графика Dollar Cost Averaging (DCA)
  •    Начало работы
  •    История цен, полученная с помощью API CoinGecko
  •    Получение данных
  •    Расчет итоговых значений
  •    Создание массива для графика
  •    Recharts графика
  •    Recharts всплывающей подсказки
  •    Recharts точек
  •    Recharts оси Y и оси X
  •    Recharts нескольких типов данных
  •    Recharts адаптации размера экрана
  •    Вывод

.     .     .

Построение Графика Dollar Cost Averaging

Dollar Cost Averaging (DCA) - это инвестиционная стратегия, для которой характерно пополнение портфеля одним и тем же активом на одну и ту же сумму в долларах через регулярные временные интервалы с целью снижения краткосрочной волатильности.

Например, инвестиция в размере $ 200 в конкретную ценную бумагу или криптовалюту каждый месяц означает, что вы будете покупать больше единиц актива, когда его цена низкая, и меньше, когда цена выше. Читайте статью Investopedia о DCA, чтобы узнать больше.

Построение графика стоимости  DCA биткоина конкретного счета с течением времени требует, чтобы мы рассчитали общую стоимость счета на каждом интервале в течение определенного периода времени.

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

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

Давайте проиллюстрируем это примером, скажем, мы планируем покупать биткоин на сумму $ 200 каждый месяц с января 2016 по май 2016.

Количество монет за первый месяц легко рассчитать, просто берем Сумму для Инвестирования ($ 200) и делим на Цену Монеты ($ 434.33) на 1 января 2016 года.

Посчитать общую стоимость тоже легко, просто возьмите Количество Монет, умноженное на текущую Цену Монеты, за первый месяц она должна равняться сумме вложенных средств ($ 200).

Code:
// amountToInvest / coinPrice
200 / 434.33  ~= .46 // Amount of Coin for the first month (Количество Монет за первый месяц)

// amountOfCoin * coinPrice
.46 * 434.33 ~= 200  // Total Value (Общая Стоимость)

Расчет Количества Монет за второй месяц немного отличается.

Во-первых, как в прошлом месяце, делим сумму инвестиций на цену монеты текущего месяца ($ 371,04). Затем добавляем это значение к сумме монет предыдущего месяца (.46).

Code:
// amountToInvest / coinPrice
200 / 371.04  ~= .54 // Amount of Coin bought in the second month (Количество Монет, купленных во втором месяце)

// amountOfCoin for second month + amountOfCoin for first month
.54 + .46 = 1 // Total Accumulated Amount of Coin (Общее Накопленное Количество Монет)

Чтобы рассчитать Общую Стоимость на второй месяц, мы берем Общее Накопленное Количество Монет и умножаем на текущую Цену Монеты.

Code:
// Total Accumulated Amount of Coin * coinPrice
1 * 371.04 = 371.04

Проделав то же самое для последующих месяцев, получаем следующую таблицу:

Месяц     Цена монеты     Всего Инвестировано     Количество Монет     Общая Стоимость

1            434.33               200                               .46                           200
2            371.04               400                               1                              371.04
3            424.49               600                               1.47                         624.00
4            416.75               800                               1.95                         811.20
5            452.59               1000                             2.39                         1081.69

Код для вычисления этих значений может выглядеть примерно так.

Code:
for (let i = 0; i < numOfDays; i += freqInDays) {
  const coinPrice = priceArr[i].price;
  coinAmount += amountToInvest / coinPrice;
  totalInvested += amountToInvest;
  const total = coinAmount * coinPrice;
  dataArr.push({
    TotalInvested: totalInvested,
    CoinAmount: coinAmount,
    CoinPrice: coinPrice,
    Total: total,
    date: priceArr[i].date,
  });
}
calculate.values.js размещен на GitHub

numOfDays - общее количество дней за период времени. В нашем случае получается 121 день между январем и маем 2016.

freqInDays - это временной интервал, через который осуществляется покупка, в данном случае он составляет 30 дней.

priceArr - это массив объектов с ценами биткойна и датами, соответствующими этой цене.

amountToInvest - это сумма в долларах, которая будет инвестирована за временной интервал, в данном случае это $ 200.

coinAmount - это общее количество монет, накопленных к текущему моменту.

totalInvested - это общая сумма инвестиций к текущему моменту.

total - общая стоимость портфеля в долларах США.

Для этих четырех значений: TotalInvested, CoinAmount, CoinPrice и Total, - мы хотим построить график изменения во времени.

freqInDays, amountToInvest и numOfDays будут задаваться пользователем, а цены биткоина, priceArr, будут взяты из API CoinGecko.

.     .     .

Начало работы

Создаем новый проект Creat React App

Code:
npx create-react-app bitcoin-dca
cd bitcoin-dca
npm start

Переходим на src/App.js и переписываем начальный код.

Code:
import React from "react";
import "./App.css";
function App() {
  return (
    

      

Bitcoin


    

  );
}
export default App;
src.app.js размещен на GitHub

Наконец, переходим на src/App.css и обновляем css-элементы, как показано ниже.

Code:
body {
  background-color: #232323;
  color: white;
}
.title {
  color: #f7931a;
  font-size: 40px;
}
.App {
  text-align: center;
}
src.app.css размещен на GitHub

.     .     .

История Цен из API CoinGecko

API CoinGecko бесплатно предлагает крипто-данные без ключа API. Конечная точка /coins/{id}/market_chart/range предоставляет историю рыночных данных о конкретной монеты в пределах указанного диапазона, это именно то, что нам нужно.

Параметр id относится к ID монеты, в данном случае это биткоин (id=bitcoin). Параметр vs_currency определяет, в какой валюте нам будет отправлена цена биткойна.

Параметры from и to задают период времени, за который будет получена цена, и должны быть представлены в виде временной метки UNIX.

Например, https://api.coingecko.com/api/v3/coins/bitcoin/market_chart/range?vs_currency=usd&from=1392577232&to=1422577232 получит цену биткоина в USD за каждый день между датами 16.02.2014 и 30.01.2015.

.     .     .

Получение данных

Во-первых, давайте зададим статичные значения startDate, endDate, freqInDays и amountToInvest в начале App.js. В идеале, мы создадим форму для ввода этих переменных пользователем, но пока определим их тут.

Затем создадим простую async-функцию, которая принимает startDate и endDate, запрашивает данные при помощи API CoinGecko и помещает их в состояние.

Чтобы хранить данные и различные состояния, нам нужно определить coinData, isLoading и error в компоненте состояния.

Code:
import React, { useEffect, useState } from "react";
import "./App.css";
const APIURL = "https://api.coingecko.com/api/v3/";
function App() {
  const startDate = "1/1/2016";
  const endDate = "1/1/2020";
  const freqInDays = 30;
  const amountToInvest = 200;
  const [coinData, setCoinData] = useState([]);
  const [isLoading, setIsLoading] = useState(false);
  const [error, setError] = useState(false);
  const getCoinData = async (startDate, endDate) => {
    setIsLoading(true);
    const url = ""; // TODO
    try {
      const coinResponse = await fetch(url);
      const data = await coinResponse.json();
      setCoinData(data);
      setError(false);
      setIsLoading(false);
    } catch (e) {
      setIsLoading(false);
      setError(e);
    }
  };
  return (
    

      

Bitcoin


    

  );
}
export default App;
app.js размещен на GitHub

Чтобы передавать параметры startDate и endDate в понятном для человека виде, мы будем использовать библиотеку Day.js, которая поможет нам конвертировать даты из вида, понятного человеку, во временные метки UNIX. Импортируем dayjs и применим его расширение advancedformat.

Code:
...
import dayjs from "dayjs";
import advancedFormat from "dayjs/plugin/advancedFormat";
dayjs.extend(advancedFormat);
...

Затем используем метод format, принадлежащий dayjs, чтобы конвертировать даты во временные метки UNIX внутри функции getCoinData.

Code:
...
const getCoinData = async (startDate, endDate) => {
  ...
  const startDateUnix = dayjs(startDate).format("X");
  const endDateUnix = dayjs(endDate).format("X");
  ...
}
...
getCoinData.js размещен на GitHub

Затем создаем URL  описанным выше способом, добываем данные, и обновляем состояние компонента с помощью setCoinData.

Code:
...
 const getCoinData = async (startDate, endDate) => {
    ...
    const startDateUnix = dayjs(startDate).format("X");
    const endDateUnix = dayjs(endDate).format("X");
    const range = `range?vs_currency=usd&from=${startDateUnix}&to=${endDateUnix}`;
    const url = `${APIURL}/coins/bitcoin/market_chart/${range}`;
    try {
      const coinResponse = await fetch(url);
      const data = await coinResponse.json();
      setCoinData(data);
      setError(false);
      setIsLoading(false);
    } catch (e) {
      setIsLoading(false);
      setError(e);
    }
 }
...
getCoinData.js размещен на GitHub

Теперь мы можем вызвать эту функцию в Хуке useEffect с датами, размещенными в верхней части компонента.

Code:
...
useEffect(() => {
  getCoinData(startDate, endDate);
}, []);
...

Существует четыре UI-состояния, которые нам нужно обработать: noData, loading, error и data. Добавим несколько условных операторов под Хуком useEffect, как это показано ниже.

Code:
...
let content =
No Data
;
if (coinData && coinData.prices && coinData.prices.length > 0)
  content =
Data
;
if (isLoading) content =
Loading
;
if (error) content =
{error}
;
return (
  

    

Bitcoin


    {content}
  

);
...
useEffect.js размещен на GitHub

Данные, получаемые из const data = await coinResponse.json(), будут представлять из себя массив из временных меток UNIX и цен в промежутке между двумя заданными нами датами.

Это именно то, что нам потребуется для расчёта итоговых значений и создания графика.

.     .     .

Расчет Итоговых Значений

Теперь наша цель - рассчитать, используя массив coinData.prices, следующие значения:

  • Итоговое Количество Монет в BTC - totalCoinAmount
  • Итоговая Стоимость в USD - endTotal
  • Итоговые Инвестиции в USD - totalInvested
  • Заработанные Деньги в USD - numberGained
  • Заработанные Деньги в Процентах - percentGained

По большей части логика тут такая же, как и в секции Построение Графика Dollar Cost Averaging.

numberGained - это разность итоговой стоимости в USD и totalInvested. percentGained - это процент, на который увеличилось totalInvested (конечное значение - endTotal). Создаем файл src/Totals, как показано ниже.

Code:
import React from "react";
export default function Totals({ priceArr, freqInDays, amountToInvest }) {
  const numOfDays = priceArr.length;
  let coinAmount = 0;
  for (let i = 0; i < numOfDays; i += freqInDays) {
    const coinValue = priceArr[i][1];
    coinAmount += amountToInvest / coinValue;
  }
  const totalCoinAmount = coinAmount;
  const totalInvested = amountToInvest * Math.floor(numOfDays / freqInDays);
  const endTotal = totalCoinAmount * priceArr[priceArr.length - 1][1];
  const numberGained = endTotal - totalInvested;
  const percentGained = ((endTotal - totalInvested) / totalInvested) * 100;
  return
Totals
;
}
src.totals.js размещен на GitHub

Для того, чтобы выводить на экран эти значения, создаем другой компонент src/Totaljs, применяя простые элементы дизайна.

Code:
import React from "react";
export default function Total({ title, value }) {
  return (
    

      

{title}:


      

{value}


    

  );
}
const styles = {
  row: {
    display: "flex",
    flexDirection: "row",
    justifyContent: "space-between",
    alignItems: "center",
    maxWidth: 350,
    margin: "10px auto",
  },
  title: {
    fontWeight: 600,
    margin: 0,
  },
  value: {
    color: "#f7931a",
    fontSize: 24,
    margin: 0,
  },
};
src.totals.js размещен на GitHub

Если вы попробуете запустить вычисления выше, то обнаружите, что большинство значений содержат много знаков после запятой. Создаем вспомогательную функцию ./src/round.js, которая будет округлять числа, чтоб они выглядели лучше.

Code:
export default function round(num, digit) {
  return +(Math.round(num + "e+" + digit) + "e-" + digit);
}
Импортируем оба компонента round и Total в компонент Totals.

А затем создаем несколько компонентов Total, передавая описание в свойстве title и актуальное значение в свойстве value. Также мы можем применить к этим значениям функцию round.

Code:
// ./src/Totals.js
import Total from "./Total";
import round from "./round";
...
return (
    

      
      
              title={"Amount Invested (USD)"}
        value={`$${round(totalInvested, 2)}`}
      />
      
      
    

  );
...
src.totals.js размещен на GitHub

Наконец, импортируем Totals в App.js и заменяем состояние «data» на компонент Totals.

Code:
...
import Totals from "./Totals";
...
let content =
No Data
;
if (coinData && coinData.prices && coinData.prices.length > 0)
  content = (
            priceArr={coinData.prices}
        freqInDays={freqInDays}
        amountToInvest={amountToInvest}
      />
  );
if (isLoading) content =
Loading
;
if (error) content =
{error}
;
...
Totals.js размещен на GitHub


.     .     .

Создание Массива для Графика

Приведенный ниже код вам уже должен быть хорошо знаком из секции DCA, пожалуйста, ознакомьтесь с этой секцией, чтобы узнать, как этот код работает.

Один момент, что мы снова используем dayjs, чтобы хранить информацию в удобном для человеческого восприятия виде. Создаем новый файл ./src/Graph.js, как показано ниже:

Code:
import React from "react";
import dayjs from "dayjs";
export default function Graph({ priceArr, freqInDays, amountToInvest }) {
  const numOfDays = priceArr.length;
  let coinAmount = 0;
  let totalInvested = 0;
  let dataArr = [];
  for (let i = 0; i < numOfDays; i += freqInDays) {
    const coinPrice = priceArr[i][1];
    coinAmount += amountToInvest / coinPrice;
    totalInvested += amountToInvest;
    const total = coinAmount * coinPrice;
    const date = dayjs(priceArr[i][0]).format("MM/DD/YYYY");
    dataArr.push({
      TotalInvested: totalInvested,
      CoinAmount: coinAmount,
      CoinPrice: coinPrice,
      Total: total,
      date: date,
    });
  }
  return
Chart
;
}
const styles = {
  container: {
    maxWidth: 700,
    margin: "0 auto",
  },
};
src.graph.js размещен на GitHub

Это создаст массив объектов dataArr, который будет выглядеть таким образом:

Code:
[
  {TotalInvested: 200, CoinAmount: .46, CoinPrice: 460, Total: 200, date: '1/1/2016'},
  {TotalInvested: 400, CoinAmount: 1, CoinPrice: 380, Total: 200, date: '1/5/2016'},
  ...
]

.     .     .
Post
Topic
Board Новички
Re: Раздача мерита нуждающимся/Есть задания l
by
Herr Kaufmann
on 27/01/2020, 10:23:38 UTC
Доброго времени суток. Пока я раздаю как мерит-сорс, у меня скапливается достаточно личного мерита. Решил потратить часть на сообщество.
Вот пачка заданий от меня.

1. - https://medium.com/logic-magazine/the-crypto-family-farm-7db517a91c07
Задание опубликовать в Новички.


5. - https://medium.com/swlh/falsifying-the-log-growth-model-of-bitcoin-value-7db6ca3603f2 -РЕЗЕРВ
Тема в раздел Обсуждение Биткоина

6- https://medium.com/@nic__carter/an-introduction-to-the-efficient-market-hypothesis-for-bitcoiners-ed7e90be7c0d
Тема в раздел Обсуждение Биткоина

8- https://towardsdatascience.com/advanced-candlesticks-for-machine-learning-i-tick-bars-a8b93728b4c5 -РЕЗЕРВ
Тема в раздел Трейдеры

10- https://medium.com/better-programming/how-to-build-a-bitcoin-dca-chart-with-react-and-recharts-d29523b5427c
Тема в раздел кодеры

Возьмусь, пожалуй, для кодеров перевести 10 статью
Post
Topic
Board Новички
Re: Раздача мерита нуждающимся/Есть задания l
by
Herr Kaufmann
on 25/01/2020, 04:46:18 UTC
xandry вам не надел этот цирк?

Ratimov, KTChampions забирают у новичков и еще издеваются.

Вы же сами своей реакцией даете повод и дальше это делать Cheesy


Забрал первую. Сафар прости, но ты опоздал Wink

Смотрите, товарищ Ратимов, подаст Сафар на вас жалобу и забанят вам аккаунт за тролинг таймингом резервирования заданий  Wink
Post
Topic
Board Альтернативные криптовалюты
Merits 15 from 3 users
Topic OP
Celsius Меняет Представление о Банковском Деле
by
Herr Kaufmann
on 24/01/2020, 06:16:41 UTC
⭐ Merited by xandry (7) ,klarki (5) ,Ratimov (3)
Перевод статьи: Startup Spotlight: How Celsius Network is Changing Perception of the Banking Business


Обзор Стартапа: Как Сеть Celsius Меняет Представление о Банковском Бизнесе


С того момента, когда была создана технологии блокчейн, мир увидел большое количество революционных идей, воплощенных в жизнь. За последнее десятилетие (или около того) множество стартапов бросали вызов сложившимся устоям, меняя наше восприятие различных отраслей и мира бизнеса в целом. Отличный стартап, способный совершить революцию в банковской сфере, появился всего пару лет назад. Celsius в настоящее время является одним из самых крупных и хорошо финансируемых крипто-стартапов, работающих в данном направлении. Его смысл заключается в создании P2P (peer-to-peer) крипто-кредитной платформы, доступной для всех в мире, позволяющей зарабатывать на инвестициях, кредитовании средств, когда это необходимо, и осуществлять платежи с помощью технологии блокчейн.

Бэкграунд


Celsius Network. Источник: Twitter.com

В 2017 году создатели Celsius - действующие CEO Alex Mashinsky и CFO Daniel Leon - нарисовали концепт проекта на салфетке, и с этого момента начали работу над его полномасштабной реализацией. Проект требовал первоначальных вложений, поэтому весной 2018 года они запустили ICO (Initial Coin Offering). Первая распродажа токенов CEL принесла около $ 50 млн., позволив Celsius запустить первое приложение, чтобы в этом же году создать компанию и обеспечить выполнение всех заявленных услуг.

В настоящий момент размеры финансирования компании Celsius поражают воображение (для недавнего стартапа). Компания может похвастаться общей стоимостью активов более чем в $ 300 млн., организацией кредитов в общей сложности на $ 2,2 млрд., и невероятным количеством в 40K+ активных пользователей кошельков через свое приложение Celsius. Все это произошло всего за два года напряженной работы команды.

Услуги Компании


Источник: Twitter.com

Что такого невероятного в Celsius? Компания предлагает своим клиентам альтернативу институциональным банковским и кредитным сервисам, благодаря которой люди получают преимущество от более качественных финансовых услуг. Компания предоставляет финансовые услуги владельцам криптовалют по всему миру через свою P2P Кредитную систему. Крипто-кошельки, подключенные к Celsius, получают возможность зарабатывать на процентах и брать кредиты по самым низким процентным ставкам. Короче говоря, Celsius позволяет пользователям зарабатывать, одалживать и возвращать деньги с помощью технологии блокчейн. Компания использует кошельки BitGo и застрахована в Lloyd's на сумму $ 100 млн.. Еще один факт, который работает в пользу данной организации, заключается в том, что CEL никогда не был связан и не участвовал в расследованиях, инициированных каким-либо регулирующим государственным органом.

Celsius Уже Меняет Банковский Сектор

Механизм традиционного кредитования часто работает «против», а не «на», человека, предоставляющего свои средства. Банки обычно выплачивают вкладчикам менее 1% годовых, но при этом выдают другим клиентам займы под 25% годовых, сохраняя при этом более 90% стоимости этих кредитов. Практика кредитования носит предвзятый характер, а принимаемые решения усиливают классовое неравенство и еще больше увеличивают разрыв между богатыми и бедными.


Источник: Twitter.com

Глядя на заявления, которые делает CEO компании Alex Mashinsky, становится предельно ясно, как именно этот стартап планирует изменить банковский сектор. Alex говорит, что их главная цель - “unbank” (дать возможность отказаться от банковских услуг) населению, предоставив лучшую альтернативу. Цель состоит в том, чтобы создать криптосообщество, где все делается в интересах клиента. Предоставляя пользователям доступ к криптовалютным кредитам, которые легко переводятся в доллары, Celsius возвращает 80% от полученного дохода в кошельки вкладчиков, по сути, делая то, что ежедневно должны делать банки. Растущий спрос на услуги Celsius виден из растущего дохода компании и большой общественной поддержки, которой они пользуются. Mashinsky объясняет это тем, что стартап работает в интересах своих клиентов.

Забегая Вперед

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

Post
Topic
Board Новички
Re: Раздача мерита нуждающимся/Есть задания l
by
Herr Kaufmann
on 24/01/2020, 03:19:40 UTC
Post
Topic
Board Новички
Re: Раздача мерита нуждающимся/Есть задания l
by
Herr Kaufmann
on 18/01/2020, 21:29:43 UTC
Что здесь можно взять для перевода? Не могу разобраться.

Вот из этого поста выбирайте то, что не зачеркнуто  Smiley
Post
Topic
Board Новички
Re: Раздача мерита нуждающимся/Есть задания l
by
Herr Kaufmann
on 17/01/2020, 22:58:01 UTC
Quote
Майнеры стремятся избавиться от своих майорских заслуг, не снижая их цены,

 Cheesy Cheesy Cheesy Чего? Майорские заслуги - это сильно. Там речь идёт о том, что майнеры стремяться ликвидировать свои вознаграждения не обваливая цену.

Я понимаю о чем речь, там походу автоисправление вмешалось, а я не заметил Smiley

Quote
За каждый доллар, который компания-участник жертвует на благотворительность, минтится CharityToken и вручается этой компании.

Чего он делает? Минтится? Я впервые такое слышу, ну синоним можно было подобрать, вроде того, что каждый выпущенный токен передаётся этой компании.

Всем же знакомо слово майнинг(?), минтинг (он же форджинг) - это тоже способ добычи монет, но на алгоритме PoS. В статье слово "минтинг" употребляется, что указывает на способ добычи. Если употребить слово "выпускается", потеряется эта информация.

Quote
Многие проекты в такой ситуации предпочтут выкупить свои токены, чтобы не подвергаться негативному воздействию рынок своих активов.

Во второй части это предложение выглядит как набор слов.

Хм.. тут тоже автоисправление видимо вмешалось, я просто отдыхать улетел и сижу с мака, которым я раньше не пользовался, тут ворда нет, а к блокноту я пока не привык.
Вторая часть предложения должна была выглядеть так: "..., чтобы не подвергать негативному воздействию рынок своих активов."
Есть же такое понятие, как, например, рынок ценных бумаг), тут речь идет о рынке всех ЦБ. Понятие рынка можно рассматривать не только как места, где покупают-продают, а как синоним понятия "объем капитализации" (часто слышал по РБК выражения типа: "рынок фьючерсов достиг рекордной отметки...") Также по аналогии существует и понятие рынка конкретного актива, например есть свой рынок у нефти, у облигаций ВТБ24, или даже у БузКоина (если он еще существует) есть свой рынок.

Так вот, о чем это я Smiley, фраза "Многие проекты в такой ситуации предпочтут выкупить свои токены, чтобы не подвергать негативному воздействию рынок своих активов." означает, что многие проекты в описанной выше в статье ситуации предпочтут выкупить вне биржи свои токены, чтобы холдер не заходил на биржу с крупным ордером на продажу, потому что это может снизить стоимость токена, соответственно снизить его рыночную капитализацию (т.е. навредить рынку конкретного токена). Вот что я имел ввиду.
Post
Topic
Board Новички
Re: Раздача мерита нуждающимся/Есть задания l
by
Herr Kaufmann
on 17/01/2020, 17:54:35 UTC
Post
Topic
Board Трейдеры
Merits 10 from 2 users
Topic OP
Внебиржевой Крипто-Трейдинг 101
by
Herr Kaufmann
on 17/01/2020, 17:51:23 UTC
⭐ Merited by xandry (7) ,Ratimov (3)
Внебиржевой (ОТС) Крипто-Трейдинг 101

Перевод статьи: Crypto OTC Trading 101

Так как криптовалюты набирают популярность  и широту применения, важно, чтобы определенные фундаментальные аспекты конфиденциальности оставались неизменными в процессе обмена этими валютами. Внебиржевая (over-the-counter, или OTC) торговля  открывает для участников рынка возможность совершать сделки с ордерами произвольного размера без влияния на работу рынка, таким образом не давая подсказок другим участникам. Что же это значит? Чтобы сохранить конфиденциальность и стоимость актива, пользователи должны выйти за пределы биржи.

В апреле 2018 размер ОТС-сделок оценивается в диапазоне от $ 250 млн. до $ 30 млрд. в день, для сравнения, в это же время объем торгов на биржах составил $ 15 млрд. за тот же промежуток времени.


Что такое OTC? Кто этим пользуется?

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

Зачем торговать вне биржи?

Криптовалюты, не входящие в первую десятку, часто имеют очень низкую ликвидность, что приводит к мелким стаканам ордеров и волатильности цен. Таким образом, большой ордер вряд ли будет выполнен быстро. Возникнет необходимость разбить ордер на более мелкие части, чтобы сразу же заполнить ордера по сниженным ценам (ситуация известна как проскальзывание). OTC устраняет проскальзывание и увеличивает объем ликвидности, доступной на биржах, что, в свою очередь, снижает волатильность и приводит к более глубоким стаканам ордеров.

Например представим, что рынок сильно волатилен, и я пытаюсь быстро продать 50 BTC на бирже. Взглянув на стакан ордеров, я вижу, что спотовая цена составляет ~$10544. Количество в ордерах на покупку, однако, недостаточно велико, чтобы заполнить ордер на продажу по этой цене. Это означает, что мне придется снижать цену, чтобы включить в свой ордер более глубокие заказы в стакане - и чем глубже я пойду, тем меньше прибыли я получу. В добавок к этому, мой большой ордер на продажу может подтолкнуть спотовую цену BTC еще ниже.

ОТС-сделки не оказывают влияния на работу рынка. Допустим, что я инвестирую на ранних этапах в новый токен, назовем его CharityToken. За каждый доллар, который компания-участник жертвует на благотворительность, минтится CharityToken и вручается этой компании. Затем CharityTokens можно потратить на каком-нибудь открытом рынке для оплаты различных услуг. Мы можем полагать, что мне понадобится обменять мои токены на другие активы, но как ранний инвестор:
  • Я поддерживаю цель проекта и не хочу подрывать общественное доверие;
  • Я не хочу негативно влиять на цену, тем самым снижая общий доход.

Многие проекты в такой ситуации предпочтут выкупить свои токены, чтобы не подвергать негативному воздействию рынок своих активов. Если CharityToken работает с ОТС-провайдером, инвестору становится проще безопасно продать эти токены, не влияя на будущее проекта.

.     .     .

Начинаем Трейдить ОТС (вне биржи)

Я буду использовать Carbon, OTC API платформу (в настоящее время представлена бета-версия), которая позволяет нам создавать ОТС-котировки, а также вносить, обменивать и выводить средства. Carbon - это криптовалютный финтех-стартап, который в настоящее время предлагает обмен фиата на крипту на платформе, и вскоре обеспечит обмен крипты на крипту и крипты на фиат вне платформы. Ликвидность обеспечивается нашими оффшорными партнерами и сервисами, в настоящее время недоступными внутри страны. Вам понадобится некоторое знакомство с Python 3 и библиотекой requests.

В этом руководстве будут подробно описаны пошаговые инструкции и пояснения, но так как оно выполняется в sandbox (testnet) среде, оно может не полностью совпадать с production (mainnet) средой.

Quote
Production Endpoint: https://api.carbon.money
Sandbox Endpoint: https://sandbox.carbon.money/

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

Code:
import requests
root_path = ‘[url=https://sandbox.carbon.money/]https://sandbox.carbon.money[/url]’
create_super_path = '/v1/create/super'
data = {
  'emailAddress': 'julian1@example-email.xyz',
  'password': 'Password1234',
  'companyName': '',
  'firstName': 'Julian',
  'lastName': 'Kocher'
}
req = requests.post(root_path + create_super_path, data)
print(req)
print(req.text)

Что даст нам ответ в консоли (почищенный для удобства восприятия):

Code:

{
“message”: ”Successfully created new user! Please record and save your UUID so Carbon Fiber’s team can approve you”,
”uuid”: ”c7c3ef5c-d936–49dc-bbe6-dd4069472400",
”jwtToken”: ”eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJjN2MzZWY1Yy1kOTM2LTQ5ZGMtYmJlNi1kZDQwNjk0NzI0MDAiLCJzdXBlclVzZXIiOnRydWUsImNvbnRhY3QiOmZhbHNlLCJlbWFpbCI6Imp1bGlhbjFAZXhhbXBsZS1lbWFpbC54eXoiLCJpYXQiOjE1NjU3MjI3OTJ9.3gAOcA7kTo_fQaNnCXITdT0bUA-XH0zaeoW-R_wVL5I”,
”webhookSecret”: ”u894dxPvJa”
}

Если бы мы были в production, нам нужно было бы пройти KYC, чтобы получить доступ к услугам Carbon на этом этапе. Однако, мы в sandbox, так что KYC сейчас не понадобится.

Дальше нам понадобится jwtToken (JSON Web Token) для всех наших будущих запросов, чтобы Carbon мог правильно идентифицировать и авторизовать нас. Сейчас мы можем создать contact, который описывает способ нашего взаимодействия с сервисами Carbon.

Code:
import requests
headers = {
    'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJjN2MzZWY1Yy1kOTM2LTQ5ZGMtYmJlNi1kZDQwNjk0NzI0MDAiLCJzdXBlclVzZXIiOnRydWUsImNvbnRhY3QiOmZhbHNlLCJlbWFpbCI6Imp1bGlhbjFAZXhhbXBsZS1lbWFpbC54eXoiLCJpYXQiOjE1NjU3MjI3OTJ9.3gAOcA7kTo_fQaNnCXITdT0bUA-XH0zaeoW-R_wVL5I'
}
root_path = ‘[url=https://sandbox.carbon.money%27/]https://sandbox.carbon.money[/url]’
create_contact_path = '/v1/contact/create'
data = {
  'emailAddress': 'otc_test@example-email.xyz',
}
req = requests.post(root_path + create_contact_path, data, headers = headers)
print(req)
print(req.text)

Наш ответ:

Code:

{
"message": "successfully created new contact!",
"code": 200,
"details":
  {
    "contactId": "72e75284-8010-4bbd-bfae-9843fcaf5b3c",
    "memo": "59356f62e57767c827a3",
    "addresses": {
      "tron": "TA6dYVjnZtE9mHCSYm5BCtmMa94JDEk42w",
      "eth": "0xd50d569810C445c283A64731f995d9Eb2B660d5F"
    }
  }
}

Важны данные, которые мы получили при создании contact, - наш contactId необходим для создания котировок и управления сделками, прочая информация относится к депонированию.

Следующие два шага можно выполнять в любом порядке:

     1. Мы можем внести средства (EOS, TRX, ETH) в рамках подготовки к внебиржевой торговле.
     2. Мы можем получить котировку для желаемого крипто-актива (EOS, TRX, ETH, CUSD).

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

Создание Депозита

Ответ при создании contact содержит информацию, необходимую для внесения депозита. Для блокчейнов Ethereum и Tron мы можем просто отправить наши средства на наш уникальный подконтрольный адрес, указанный в поле addresses нашего ответа при создание contact. Для EOS мы должны отправить наши средства на счет аккаунта Carbon с нашей уникальной меткой (memo).

Пути депозита (для contact, который мы только что создали):
Ethereum: отправляем средства на
0xd50d569810C445c283A64731f995d9Eb2B660d5F
Tron: отправляем средства на TA6dYVjnZtE9mHCSYm5BCtmMa94JDEk42w
EOS: отправляем средства на аккаунт carbonteswal с memo 59356f62e57767c827a3


Примечание: carbonteswal это депозитарный аккаунт Carbon в sandbox . Депозитарный аккаунт в production будет qindynasty11.

Подготавливаясь к созданию котировки, я отправляю 300 EOS через Scatter.


Не забудьте про memo!

Получение Котировки

Теперь, когда я депонировал мои EOS, я готов получить ОТС-котировку. Следуем приведенному ранее образцу:

Code:
get_quote_path = '/v1/otc/getPrice'
data = {
  'contactId': '72e75284-8010-4bbd-bfae-9843fcaf5b3c',
  'input': 'eos',
  'output': 'eth',
  'quantity': 300
}
req = requests.post(root_path + get_quote_path, data, headers = headers)

Это даст нам ответ:

Code:

{
  "token":"0e48f7ebac54e65e",
  "exchangeRate":"0.019562286961201156126",
  "input":"300 EOS",
  "output":"5.8686860883603468378 ETH",
  "timestamp":1565726930105,
  "quantity":"300",
  "usdValue":"1225.81"
}

Мы получили котировку - я обмениваю 300 EOS на ~5.8687 ETH (стоимостью $1225.81). Для сравнения, конвертер валют CoinMarketCap рассчитывает, что 300 EOS эквивалентны $1218.63 на момент котировки. Конечно же, это еще он не учитывает проскальзывания!

Осуществление ОТС-сделки

Теперь у нас есть все, что нужно - наши средства задепонированы, и наша котировка создана. Отправим token (в течение его 60 секунд жизни), и своп выполнится.

Code:
submit_token_path = '/v1/otc/submit'
data = {
  'contactId': contactId,
  'token': '0e48f7ebac54e65e',
}
req = requests.post(root_path + submit_token_path, data, headers = headers)

Что (в этом случае) вернется:

Code:

{
  "message":"Performing swap now.",
  "inputSwap":"eos input transfer pending",
  "outputSwap": "0xfb07d24002eb17bcb09c4cd7597d15b4a206b61295995f8d967d4578f5a318e9"
}

Если своп выполнен успешно, мы должны получить сообщение, как приведенное выше. Наши EOS обменены при помощи Carbon, и взамен мы имеем ETH на нашем депозитном счете Эфириума (транзакция outputSwap).

Примечание: EOS не имеют ID транзакции, потому что переводы EOS обрабатываются внутри платформы. Смотрите дополнительную информацию в документации Carbon.


Квитанция outputSwap

Вывод Средств

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

Code:
withdraw_path = '/v1/otc/withdraw'
data = {
  'contactId': contactId,
  'chain': 'eth',
  'address': '0x33E2a10456669E4CeeBFa693ED567a8Fd5E2e9d6',
  'asset': 'eth',
  'quantity': '5.868665088360346838'
}
req = requests.post(root_path + withdraw_path, data, headers=headers)

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

Code:

{
  "details": {
    "txId": "0x9e93296ba2a7ec0ee9482b4c3ddb571e9bd729293a3427b662c641e44568a131",
    "to":"0x33E2a10456669E4CeeBFa693ED567a8Fd5E2e9d6",
    "quantity":"5.868665088360346838 ETH"
  },
  "message":"withdrawal in progress"
}

Вывод средств был выполнен - мы можем проверить актуальный статус вывода средств, посмотрев txId в Ethereum Testnet Explorer.

Предоставление Сопутствующих Услуг

Если цикл депонирования / котировки / отправки / вывода сложнее, чем вы бы хотели, или если вы хотите попробовать более простую форму ОТС-торговли, Carbon также предлагает вариант двухкомпонентной ОТС-сделки, которая требует только получения котировки, а затем внесения средств для беспрепятственного получения обмениваемого актива на предоставленным пользователем адресе.

Также следите за появлением наших внутри платформенных и вне платформенных (для обмена крипты на фиат) туториалах, которые скоро станут доступны.

Дисклеймер: Carbon спроектировал и разработал это программное обеспечение по запросу оффшорного партнера.


Post
Topic
Board Новички
Re: Раздача мерита нуждающимся/Есть задания l
by
Herr Kaufmann
on 14/01/2020, 19:47:49 UTC
Post
Topic
Board Бизнес
Merits 5 from 1 user
Re: Primedice - Казино номер 1 . Лучшее Дайс казино .
by
Herr Kaufmann
on 11/01/2020, 14:52:50 UTC
⭐ Merited by xandry (5)
Перевод поста:https://forum.primedice.com/topic/37895.../

[0.08 BTC] Аллея Славы: Сногсшибательная Блондинка



Аллея Славы: Сногсшибательная Блондинка

Окончание: 13/01/20 @ Полдень (12:00) GMT

Вы когда-нибудь слыхали о Норме Джин Мортенсон? Вам это имя ни о чем не говорит?

А как насчет шикарной пин-ап моделе, сногсшибательной блондинке с потрясающей фигурой, напоминающей песочные часы? Да, Мерлин Монро!
На первый взгляд, просто красивая внешне, но лишенная таланта? Или женщина, которая играла такую роль всю свою жизнь?
Вам решать! Важно одно, она остается неизменной иконой нашего времени!

Все игроки, которые выполнят испытание в ближайшие 7 дней, получат свою долю в призовом фонде! Количество победителей не ограничено, и чем больше людей участвует в конкурсе, тем больше призовой фонд! Так что если вы привлечете больше людей, то и выиграете больше!

Требования:
  • Получите 5 разных чисел из следующей серии с любым коэффициентом:
    | 00.08 | 00.80 |08.00 | 08.08 | 08.80 |80.00 | 80.08 | 80.80 | 88.00 | 88.88 |
  • ID ставок должны содержать число 6 и число 9.
  • Допускается смена сидов, сторона не оговаривается.
  • Минимальная ставка:
    • bitcoin 0.00000100
    • bitcoin cash 0.00003200
    • ethereum 0.00005300
    • litecoin 0.00017000
    • dogecoin 3.50000000
    • ripple 0.03200000
    • tron 0.51000000
  • Допускается одна заявка на семью (домохозяйство).
  • Ставки должны быть сделаны после начала данной акции.
  • Не меняйте ваш указанный аккаунт в течение всего срока действия акции.
  • Более 10 сообщений на форуме.
  • Не допускается нарушение никаких Основных Правил Раздачи Подарков!

Призовой фонд:

Минимальный призовой фонд: 0.01 BTC
Если более 30 участников: 0.03 BTC
Если более 50 участников: 0.05 BTC
Если более 100 участников: 0.06 BTC
Если более 200 участников: 0.08 BTC

Как присоединиться

Отпишитесь в этом топике и привяжите ID ваших ставок, используя функцию link в редакторе текста. Не стесняйтесь редактировать ваши посты в случае, если вы поймали еще подходящие ставки.

(Вставьте ваш ID ставки, затем выделите и кликнете на кнопку привязки ставки, как показано на рисунке)

Post
Topic
Board Новички
Re: Раздача мерита нуждающимся/Есть задания l
by
Herr Kaufmann
on 11/01/2020, 14:13:31 UTC

От себя предложу ещё два конкурса от Primedice на двух участников соответственно:
1. 🏆 [0.08 BTC] Walk of Fame: The Blonde Bombshell 💋
2. 🥇[ACTIVE] [0.2 BTC] ​Speed Up! 🛵| TIER
Переводы пойдут в местную тему данной игры.

Первую переведу сейчас. Еще же не поздно, конкурс до 13-го


Запостил перевод
Post
Topic
Board Новички
Re: Раздача мерита нуждающимся/Есть задания l
by
Herr Kaufmann
on 04/01/2020, 04:49:10 UTC
Уже несколько лет обсуждение идет, правда в 17 году заглохло, видимо так и не договорившись. Можно ознакомиться с аргументами обеих сторон, там вроде даже кто-то Бетковен предлагал Wink:
грамматика: биткоЙн или биткоИн?

И в этой теме вопрос тоже поднимался:
CoinTelegraph теперь и на русском языке.
Post
Topic
Board Новички
Merits 3 from 1 user
Re: Лайфстайл: Где Потратить Криптовалюту?
by
Herr Kaufmann
on 03/01/2020, 11:11:33 UTC
⭐ Merited by Ratimov (3)
Раз после после публикации стартовой статьи о люксовых вещах и услугах, появилась критика, сводящаяся к тому, что такие покупки основной аудитории раздела не по карману, значит все-таки потенциально тема людям интересна. А поэтому дополню ее своей подборкой вариантов, собранной на просторах интернетов, но на этот раз речь пойдет не о люксовом сегменте, а о том,
где у нас можно расплатиться криптой в повседневной жизни.


Фото позаимствовано на steemit.com

И если США и Европа далеко ушли в этом плане, определив правовой режим криптовалюты, то в России, хотя и нет ограничений на использование биткоина, но компании не имеют права официально принимать его в качестве оплаты за свои товары и услуги. По состоянию на конец 2019 года правовой статус криптовалюты в РФ до сих пор обсуждается.

Часть компаний решает эту проблему путем регистрации в офшорных зонах, чаще всего это компании, которые оказывают услуги онлайн и также принимают за них оплату, например, различные инвестиционные фонды, сервисы, оказывающие консультационные услуги и занимающиеся продажей объектов интеллектуальной собственности. Этим путем могут идти и онлайн сервисы, чей статус в РФ не совсем попадает в правовое поле, такие как онлайн-казино, букмекерские конторы, сайты для взрослых.


Фото позаимствовано на Printerest.com

Сделать заказ онлайн вы можете, например, тут:

  • Firmingel - революционная разработка ЛАБОРАТОРИИ МНОГОФУНКЦИОНАЛЬНЫХ МАТЕРИАЛОВ для естественного очищения, восстановления и обновления кожи.
  • AirBaltic - авиакомпания, которая предлагает билеты по низким ценам в рамках своей сети полетов, охватывает Европу, Скандинавию, Россию, СНГ и Ближний Восток.
  • Wheely - международный сервис заказа водителей, работает в Москве.
  • Store.bitcoin - магазин, в котором можно купить одежду, технику, различные цифровые гаджеты и электронные девайсы.
  • Poppers.su - интернет-магазин интимных подарков и товаров для взрослых.


Фото позаимствовано на coindesk.com

Несмотря на правовую неопределенность, в РФ все же существует офлайн бизнес, принимающий криптовалюту в качестве оплаты. Например:

  • Bake Cupcake -  первая в России пекарня, которая принимает биткоин. Само производство кондитерских изделий расположено в Москве (станция метро Речной вокзал), по улице Смольная, дом 29, но работает пекарня по предзаказу и использует курьерскую доставку. Компания уверяет, что обменивает полученные биткоины на рубли и отчитывается в соответствии с законодательством РФ.
  • Starbucks - известная всем сеть кофеен заявила, что благодаря участию компании в проекте по созданию платформы Bakkt, скоро будет доступна форма оплаты в биткоине. Пока биткоином можно оплатить только в США через приложение Spedn.
  • Распутин - салон эротического массажа в Екатеринбурге принимает оплату криптовалютой. Теперь их слоган: «Еще больше конфиденциальности».
  • Lavka-flowers - салон цветов в Уфе.
  • Пивотека 465 - сеть крафтовых баров.
  • Valenok - ресторан русской кухни.
  • TENь - тату-салон.
  • SPBINN - сеть мини отелей в Санкт-Петербурге.
  • 2bigbar - фитнесс-кафе.

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

  • Spendabit - это целая поисковая система, которая ищет на разных интернет-магазинах и торговых площадках товары, которые можно оплатить биткоинами.
  • OpenBazaar - специальная интернет-биржа, которая помогает реализовывать товары и услуги только за биткоины.
  • Purse.io - инструмент для покупки товаров на Amazon за биткоины. Позволяет одной стороне обменять биткойн на товар, при этом биткоины получает третья сторона, владеющая подарочным сертификатом Amazon, которым она оплачивает товар для первой стороны.
  • Coinmap - сервис, который на карте мира отображает магазины, принимающие в качестве оплаты биткоин.
  • SpendBitcoins - еще один сервис-карта.
  • CoinATMRadar - ищет ближайший обменник биткоинов на местную валюту.

До тех пор, пока не будет определен правовой режим для использования криптовалюты в РФ, оплата биткоинами так и будет приниматься по большей части частными лицами в полуофициальном порядке, либо с применением ухищрений, на которые готов идти далеко не каждый бизнес. На помощь приходят сервисы, выступающие в роли посредников, они принимают криптовалюту от плательщиков и обеспечивают быструю конвертацию в фиатные деньги, переводя их на счет магазина. Список приложений может меняться, лучше самостоятельно мониторить их на AppStore и GooglePlay.
Post
Topic
Board Новички
Merits 2 from 1 user
Re: Лайфстайл: Где Потратить Криптовалюту?
by
Herr Kaufmann
on 30/12/2019, 05:37:04 UTC
⭐ Merited by FontSeli (2)

Всё дело в том, что те, кто могут позволить себе все эти предметы роскоши и услуги, тут не сидят в принципе.

А для простых обывателей это еще одна статья , чтобы можно было "помечтать или пустить слюну" Cheesy

Разумеется, практического применения  от неё никакого, просто красивые картинки, как и журнал с суперкарами.

Но, можно ли сказать, что покупать суперкар за 8 миллионов евро это полный сверх разум? Конечно же нет. Как и говорить такое про часы. Дорогие часы это показатель статуса, а не сверх разума. Сверх разум ты с такими часами покажешь, если купишь их в кредит или на последние деньги. Cheesy

Бедные никогда не поймут богатых. Разный уровень мышления.

Это ложные ценности. Часы за миллион не покажут сколько времени вы украли у себя же и своих детей, чтобы на них заработать. Жаль что это мало кто понимает, пока не становится поздно.

Было бы интересно увидеть такую статью о детских домах или лечебных заведениях, принимающих пожертвования криптой, особенно в преддверии Нового года и Рождества.



Было бы странно, если бы часы показывали некое "украденное" время. Часы за миллион должны показывать текущее время и, возможно, дату, и секундомер должен работать, если есть. Подаренного Доте или Танкам времени не покажут и часы за 2К на руке компьютерного задрота. Цена часов тут ничего не определяет.

Если человек "крадет" время у себя или своих детей, скорее всего он это делает не ради часов, это его выбор в этот момент времени. Однозначно судить об этом тоже не стоит, во всем должна быть мера. Карьерист, который на пенсии обнаружил, что у него есть дети, скорее всего пожалеет о том, что мало уделял времени семье. Но а разве другая крайность: мужичек - домохозяйка, который не смог ничего дать детям и семье, кроме своего внимания, - сильно лучше вариант??

Важно соблюдать золотую середину. А уж кто сколько сумел заработать, тот столько и решает как потратить, часы купить за 10 млн или ночлежку построить. При этом не редкость, когда человек с дорогими часами сделал для тех же больных детей больше, чем 1000 кухонных сочувствующих.

Эта статья не о том, что правильно, а что не правильно, а о том, где потратить крипту на люксовые вещи и услуги. И об этом написано в заголовке Wink

Если хотите почитать о благотворительности криптой, вот нагуглил немного:
Post
Topic
Board Новички
Merits 8 from 3 users
Topic OP
Лайфстайл: Где Потратить Криптовалюту?
by
Herr Kaufmann
on 29/12/2019, 10:46:07 UTC
⭐ Merited by Alex_Sr (5) ,xandry (2) ,Ratimov (1)
Перевод статьи: https://bmag.io/2019/08/02/lifestyle-where-to-spend-cryptocurrency-on-luxury-items-and-services/

Лайфстайл: Где Потратить Криптовалюту на Предметы Роскоши и Услуги?
Автор: Maria Birger 02/08/2019


Сфера использования цифровых валют расширяется. Таковы возможности, предоставляемые новой технологией и средствами обмена. Но одной из оставшихся проблем является обеспечение возможности использования криптовалюты как фиатной валюты: для покупок. За последние несколько лет многие компании, от лидеров в своих отраслях, таких как Microsoft или Overstock, до небольших магазинов и ресторанов по всему миру, начали активно использовать криптовалюту. Признавая существование большого интерес к высококачественным продуктам и эксклюзивным впечатлениям, мы собрали руководство по шести люксовым брендам, которые признали криптовалюту.

Manufacture Contemporaine du Temps (MCT)


Наручные часы MTC известны как эксклюзивные и технически сложные. Картинка позаимствована: mctwatches.com

Некоторые продавцы люксовых часов и ювелирных изделий предлагают своим покупателям криптовалюту среди вариантов оплаты. Manufacture Contemporaine du Temps (MCT) - это швейцарский производитель люксовых часов, хорошо известный своими инновационными и технически сложными хронографами, которые “меняют лицо времени". Компания разрабатывает и выпускает около 100-150 уникальных часов в год, все собственного производства. Эти высококлассные часы выпускаются ограниченным тиражом и доступны в бутиках по всему миру. MCT теперь предлагает своим клиентам купить часы онлайн с помощью Биткоина.

Samer Halimeh – Продавец Ювелирных Изделий


Потрясающие розовые бриллианты Samer Halimeh. Картинка позаимствована: Twitter.com

Для тех, кто ищет сделанное на заказ, уникальное ювелирное изделие, магазин Samer Halimeh может стать правильным местом для покупок. Ливано-американский ювелир известен своими сделанными на заказ изделиями и редкими драгоценностями. Имея штаб-квартиру в Нью-Йорке, флагманский магазин в Лондоне и магазины в Эр-Рияде и Куала-Лумпуре, творения Халимеха доступны для очень богатых клиентов из США, Европы, России, Ближнего Востока и Юго-Восточной Азии. В 2017 году Samer Halimeh начала принимать в качестве оплаты Bitcoin.

Berkeley Travel - Люксовое Туристическое Агенство


Дайвинг - один из видов отдыха, предлагаемый Berkeley Travel. Картинка позаимствована: www.berkeleytravel.co.uk

Базирующееся в Лондоне Berkeley Travel специализируется на самых роскошных впечатлениях. Агентство предлагает ряд эксклюзивных услуг, включая частные чартерные рейсы, роскошные круизы и парусные экскурсии, сафари по самым захватывающим природным паркам мира и приключения на открытом воздухе с адреналином. Независимо от того, ищете ли вы романтическое путешествие, семейный отдых или экстремальные приключения для одиноких, специальные маршруты агентства включают в себя выбор лучших в мире отелей, ресторанов, клубов, спа-салонов и предметов роскоши.

Juliettes Interiors - Элитная Мебель


Juliette предлагает высококлассную мебель и дизайн. Картинка позаимствована: Twitter.com

Компания Juliettes Interiors, занимающаяся продажей элитной мебели и предоставлением услуг по дизайну интерьеров, славится своими трендами и технологиями. Компания, клиентами которой являются члены королевских семей, главы государств, знаменитости и бизнес-лидеры, обставляющие свои яхты и особняки по всему миру, теперь предлагает новый способ оплаты: Биткоин.

Caribound - Аренда на Время Отпуска


Caribound предлагает в аренду роскошные виллы. Картинка позаимствована: www.caribound.com

Caribound предлагает различные варианты элитного жилья на Карибах, от доступной роскоши до домов премиум и супер-класса. Они подберут на любой вкус. Можно подобрать виллу с полным набором услуг, предлагаемых отелями, или коттедж в тихом месте на красивом пляже. Так как компания возглавляется миллениалами, которые используют новые технологии, Caribound начала принимать биткойн в 2017 году.

Магазины Harvard and MIT COOP


Внутри Harvard Coop. Картинка любезно предоставлена Pinterest.com

Лучшие частные школы и университеты по всему миру всегда привлекали богатых и влиятельных людей. The Coop служит кампусным магазином для Гарвардского и Массачусетского университетов и их известных академических сообществ. Торговые точки The Coop и их интернет-магазин предлагают самый большой выбор официально лицензированной Harvard и MIT атрибутики и подарков по всему миру, а также все необходимое для тех, кто посещает эти элитные учебные заведения. Бостон и Кембридж, Массачусетс привлекает большое количество богатых гостей, чаще всего родителей сейчас обучающихся студентов или тех, кто хочет добиться того, чтобы их отпрыск получил диплом одной из лучших школ мира.
Post
Topic
Board Новички
Re: Раздача мерита нуждающимся/Есть задания l
by
Herr Kaufmann
on 29/12/2019, 07:46:29 UTC
На самом деле там не одна статья, а множество просто они забаханы в ряд на одной странице.
Лучше бы Gangster-Hamster уточнил что конкретно его интересует.
В любом случае я уже до НГ пока на паузе  Smiley
Поддерживаю, это не одна статья, а сборник, и половина из них состоят почти целиком из списков ссылок на другие статьи, своего рода оглавления получаются. Я бы ее взял, но она реально огромная, а у меня сессия началась. Если она действительно представляет ценность для сообщества, то, может, перевести ее коллективно: человек, который переводит первую подстатью из большой статьи, начинает тему; другой берет вторую, постит перевод в той же теме и т.д. Такое вот предложение.

В раздел новички предлагаю ещё перевести статью Lifestyle: Where to Spend Cryptocurrency on Luxury Items and Services?
Беру эту на перевод

Выложил перевод
Post
Topic
Board Альтернативные криптовалюты
Merits 10 from 2 users
Re: Obyte/Byteball: нoвый кoнсeнcуc нa DAG + привaтныe плaтeжи
by
Herr Kaufmann
on 24/12/2019, 12:41:02 UTC
⭐ Merited by xandry (8) ,Ratimov (2)
Перевод статьи: Using AA for GBytes heritage

Использование АА (автономных агентов) для оформления наследства GBytes

Мы чувствуем себя умными, потому что добыли немного  GBytes, но что если вы завтра умрете?

Представляем WEAALTH на базе Obyte

WEAALTH использует 2 вспомогательных AA:

- HOLLAA используется для хранения перечня наследников;
- АА хранит SHA256 из Obie sharjar.

Давайте начнем оформление нашей последней воли / завещания, с помощью этих АА

WEAALTH-адрес:



Чтобы создать завещание:



Наш адрес временно хранит в качестве переменной ключ, который позволит полную настройку без добавления testament_name в качестве входных параметров…

Добавим несколько наследников

Мы хотим добавить «Ape» как наследника 40% нашего состояния, мы должны передать им секретную фразу, которую он будет использовать для подтверждения права собственности, когда мы умрем.

Мы должны предоставить в WEAALTH base64-закодированый SHA256 хеш этой секретной фразы (например, созданной здесь). Если фраза выглядит как «Ape, you are good boy», хеш выглядит так:

T928rsmqTikcCnNKfypamRSuI2xuMG+GTSD6L6hJl1I=





60% завещаем для «bonobo», его секретной фразой будет «bonobo is not a chimpanzee», хеш будет:

HQihyclMPHspcqBwimQplrg9PSzhHgzSKa4S50v9HHg=



Финальная настройка завещания



Теперь завещание запечатано и не может быть изменено.

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

Пополнить баланс завещания

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

Для пополнения баланса используйте:



Теперь кое-что серьезное для тех, кто собирается наследовать.

Если Monkey разочаруется в этом мире, 2 наследника смогут инициировать запрос, чтобы получить доступ к деньгам.

Запрос вашей части наследства

За это действие нужно заплатить 50.000 bytes, это сделано, чтобы избежать спама. Байты вам вернут, если право собственности будет доказано позже (правильная секретная фраза).





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

Запрос просто инициирует отправку уведомление владельцу наследства и запускает период, в течение которого он сможет доказать, что он жив, отменив запрос.





Для тестнет версии задан период в 10 минут, но в мэйннет версии он составит недели или месяцы, или, возможно, составитель сможет задавать его опционально в момент создания завещания.

В течение этого периода ни один из наследников не сможет получить доступ к финансам.



Если Monkey не отменит запрос на наследство в течение этого периода, наследник действительно сможет получить деньги, которые будут безопасно храниться во втором АА, который высвободит их только в том случае, если он докажет право собственности, предоставив свою секретную фразу.