Смарт-договор для акций компании

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

Я читал все учебники Ethereum и не могу узнать, как получить карту всех акционеров с количеством принадлежащих им акций. При голосовании выплата дивидендов и разделение /разворот акций должны знать количество акций, которое имеет каждый акционер, и для разделения и разворота необходимо будет изменить количество акций, которое имеет каждый держатель.

Мой вопрос: как транзакция может получить список /карту /массив акционеров и соответствующие акции, чтобы их можно было прочитать и изменить?

5 голосов | спросил Patrick W. McMahon 23 Jpm1000000pmMon, 23 Jan 2017 19:16:04 +030017 2017, 19:16:04

2 ответа


3

Существует не стандартизированное решение для заключения контрактов с ценными бумагами, которые могут выполнять описанные выше функции, но:

  1. Распределение дивидендов (Push)
  2. Разделение запасов
  3. Обратный сплит

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

В дополнение к Договору ERC20 вы можете создать другой контракт (или ряд контрактов), чтобы предоставить акционерам права голоса, которые помогут вам определить разброс запасов или разворот. Примерный контракт для управления голосованием акционеров может быть найден в начале документации DAO веб-сайта Ethereum в разделе «Конгресс Blockchain» : Код " - см. Функции newProposal(), vote() и executeProposal().

Причина, по которой три черты выше сложны, состоит в том, что существует лимит газа для виртуальной машины Ethereum; для каждого блока может быть выполнено только так много вычислений. Например, если вы хотите направить дистрибутив на дивиденды, вам нужно будет запустить цикл в массиве. Если у вас будет только 10 акционеров, это будет довольно легко, и количество требуемых вычислений будет меньше, чем ограничение на газ. Но если вы доберетесь, скажем, до 10 000 акционеров, это, вероятно, превысит газовый предел и будет невыполнима.

Решение о распределении дивидендов может заключаться в том, чтобы поместить все имеющиеся дивиденды в фонд пула. Акционеры не будут автоматически распределять свои рассылки на свой счет путем нажатия; вместо этого они будут вынуждены вручную извлекать свои дивиденды. Здесь можно использовать функцию withdraw().

Разделение запасов и обратное разделение также потребуют вычислительно требующих циклов. Но возможным решением может быть использование модифицированного контракта Token Contract. Модификация может быть дополнительным условием, добавленным к функции transfer(), которую можно назвать checkForSplitReverseSplit(). Эта функция checkForSplitReverseSplit() может вызывать bool где-то в вашем блочном конгрессе, который позволяет маркеру ERC20 знать, что токен был разделен или раздвоен, тогда измените сумму кошелька акционера соответственно перед отправкой; или отклонить передачу, но отрегулировать сумму (для безопасности пользователя).

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

ответил CBobRobison 24 Jam1000000amTue, 24 Jan 2017 02:13:08 +030017 2017, 02:13:08
1

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

Нет ничего похожего на SQL. Чтобы реализовать такие вещи, вы берете на себя ответственность за каждый отдельный байт. Это означает, что такие вещи, как обобщенные коллекции nosql, система b-tree, над которой я работаю, должны быть закодированы.

Модернизируемость - это скрытая проблема, потому что Smart Contracts хранит данные внутри скомпилированных контрактов. Обновление программного обеспечения означает отказ от накопленных данных. Есть решения, которые требуют времени, чтобы понять. Он сильно отличается от сервер-ориентированных структур.

Завершение работы над хранилищем в Smart Contracts - IMHO, анти-шаблон. Редко, если вообще когда-либо, хорошая идея работать с более чем одной записью за раз в контракте. Вы можете иметь привилегированных пользователей и клиентов, которые обрабатывают переплетенные вещи в цепочке.

Есть новые и странные структуры, чтобы узнать о них, чтобы вы могли принимать обоснованные решения по использованию. Например, фабрики контрактов и токенизация.

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

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

В шаблоне используется итеративное отображение. «Итерируемый» означает доступ к данным по номеру строки. Отображение означает случайный доступ с помощью первичного ключа за один шаг. Контракт поддерживает структуру посредством операций вставки, обновления и удаления.

запрос публичных данных нескольких интеллектуальных контрактов

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

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

ответил Rob Hitchens 24 Jam1000000amTue, 24 Jan 2017 01:51:15 +030017 2017, 01:51:15

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132