DAO, экстерриториальные юрисдикции и союз эгоистов
Введение
История экстерриториальных юрисдикций
Идея об экстерриториальных юрисдикциях появилась еще в 19 веке в рамках идеи Панархии, предложенной Полем Эмилем де Пюидом.
Суть идеи состоит в том, что человек должен иметь возможность вступать в юрисдикции без необходимости физической релокации, таким образом беспрепятственно выбирая форму правления
С момента появления идеи прошло 160 лет и идея виртуальных государств смогла получить более широкое распространение благодаря интернету, а именно благодаря экосистеме Web 2.0.
На данный момент практически все существующие гос-ва не исполняют никаких серьезных функций и не обладают признаками государственности:
- иметь казну (казначейство) и право принудительного сбора налогов;
- иметь подконтрольную территорию с постоянным населением;
- иметь органы управления;
- иметь силовые структуры для реализации монополии насилия.
Далее в статье я попытаюсь рассмотреть способ построения эффективной виртуальной юрисдикции с либертарианской позиции на основе DAO и экосистемы Web 3.0, но для начала нужно разобраться в основных технологиях
DAO и Web 3.0
DAO — децентрализованная автономная организация, работающая поверх блокчейна.
DAO работает на основе технологии смарт-контрактов — программ, которые исполняются майнерами сети. Такой способ исполнения позволяет добиться прозрачности и децентрализованноcти. К примеру, алгоритм суда исполняемый в виде смарт-контракта будет виден и доступен всем участникам контракта, а добросовестное исполнение алгоритма гарантированно природой блокчейна.
На основе DAO основано управление многими проектами и даже компаниями. Такой подход позволяет добиться честного управления со стороны участников проекта и чаще всего реализован так, что участник с большим количеством токенов имеет больший вес голоса(т.к он больше заинтересован в успешности проекта)
Конечно, такой подход разумен в управлении компанией и вряд ли подойдет для построения государства.
К счастью, гибкость смарт-контрактов позволяет нам задавать свои правила и методы управления, разрешения конфликтов в DAO
Теоретическая часть
Обозначим цели нашей виртуальной юрисдикции, она должна:
1.1. Иметь права выхода и вступления
1.2 Строиться на добровольном взаимодействии
2. Иметь способ разрешения конфликта(суды)
3. Иметь общую казну, откуда с помощью системы управления можно финансировать различные проекты
4. Иметь способ обеспечения соблюдения установленных правил
У многих читателей сразу возникнет вопрос: как данная юрисдикция будет обеспечивать соблюдение решений суда и бороться с невыполнением обязательств?
Ответ очень прост — юрисдикция должна оправдывать себя, а участие в ней должно быть привилегией. Классические государства строятся на насилии, фактически обязывая людей соблюдать их законы без возможности выхода, им не нужно конкурировать с другим юрисдикциями(конечно, существует эмиграция, но это не тот уровень конкуренции, который представлен в экстерриториальных юрисдикциях)
Таким образом, субъекты, вступившие в юрисдикцию, будут платить определенный взнос, точно так же можно брать определенный залог, который будет возвращаться только при определенных условиях(e.g нахождение в юрисдикции определенное время). При нарушении решений юрисдикции, субъект будет терять данный взнос, а также все бонусы, которые предоставлялись юрисдикцией, не говоря о репутационном риске, который будет учитываться в других юрисдикциях.
Цель существования и функции юрисдикций — не менее важный вопрос, что может предоставить юрисдикция не имеющая рычагов в физическом мире? Намного больше чем думаю многие. К примеру, в юрисдикции может быть создана система взаимопомощи(юридической, медицинской и материальной). Представьте юрисдикцию, работающую на экономике подарков, где каждый может получить помощь или предоставить таковую, а исполнение обязанностей и урегулирование споров будет решать виртуальный суд.
Не нравиться экономика подарков?
Юрисдикция с рыночными решениями работает даже лучше, представьте, что вы имеете виртуальный форум, где можно приобрести любую услугу с гарантией исполнения.
Виртуальный юрисдикции смогут предоставлять услуги страховки, материальной и информационной помощи, арбитража и рыночной платформы.
Подобные юрисдикции смогут объединяться в конфедерации, на основе новых смарт-контрактов для удобства пользователей обоих.
У разных юрисдикций могут быть абсолютно разные внутренние системы(Прямая демократия с голосованием по разрешению споров/представительная демократия с выбором судьи/автократия с единственной властью в виде владельца контракта) управления и взаимодействия, но благодаря новому смарт-контракту пользователи этих юрисдикций смогут взаимодействовать по нерушимым правилам установленных в контракте
Смарт-контракты являются идеальным способом построения виртуальных государств, а благодаря своей природе они полностью подходят под либертарианские ценности, ведь все действия добровольны, а каждый субъект имеет свободу ассоциации. Работоспособность юрисдикций держится только на их способности обеспечивать потребности субъектов(ведь они не имеют монополии на насилие, которое в данной экосистеме невозможно), а это означает повышенную конкуренцию
Практическая часть
Из интереса, я решил написать реализацию простой виртуальной юрисдикции, которая работает на основе представительной демократии и позволяет производить сделки между пользователями, а также голосовать за новые проекты.
Для входа в юрисдикцию требуется внести безвозвратную комиссию в размере 1 ETH и возвратный залог в размере 5 ETH:
function join() external payable { require(msg.value == pledgeAmount + commission, "Must send commission and pledge to join"); require(!joinedAddresses[msg.sender], "Address already joined"); joinedAddresses[msg.sender] = true; balances[msg.sender] += msg.value; emit Joined(msg.sender); }
Далее, используется простая система заказов и проверки того, что вызов производиться участником юрисдикции:
function isJoined(address _addr) external view returns (bool) { return joinedAddresses[_addr]; } function placeOrder(string memory _title, uint256 _price, string memory _description) external onlyJoined { orderCount++; orders[orderCount] = Order(orderCount, msg.sender, address(0), _title, _price, _description, false, false, false); emit OrderPlaced(orderCount, msg.sender, _title, _price); } function takeOrder(uint256 _orderId) external payable onlyJoined { Order storage order = orders[_orderId]; require(order.id == _orderId, "Order does not exist"); require(!order.isTaken, "Order already taken"); require(msg.value == order.price, "Incorrect ETH amount sent"); order.buyer = msg.sender; order.isTaken = true; balances[order.seller] += msg.value; emit OrderTaken(_orderId, msg.sender); } function completeOrder(uint256 _orderId) external onlyJoined { Order storage order = orders[_orderId]; require(order.id == _orderId, "Order does not exist"); require(order.buyer == msg.sender, "Only the buyer can complete the order"); require(order.isTaken, "Order not taken"); require(!order.isCompleted, "Order already completed"); order.isCompleted = true; reputation[order.seller]++; reputation[order.buyer]++; }
Функция isJoined - проверяет наличие пользователя в базе юрисдикции
Функция placeOrder - отсылает запрос на создание нового заказа
Функция takeOrder - отсылает запрос на принятие существующего заказа
Функция completeOrder - завершает выполнение заказа
Можно заметить, что в коде используется переменная reputation.
В демо юрисдикции, залог в размере 5 ETH можно вернуть, выполнив некоторое количество успешных заказов(заработав репутацию за каждый из них)
Конечно, для любой системы заказов нужна система диспутов.
В данной юрисдикции происходят голосования о назначении судьи, который будет заниматься разрешением заказов:
function nominateCandidate() external onlyJoined { require(votingOpen, "Voting is not open"); require(!isCandidate(msg.sender), "Already a candidate"); candidates.push(msg.sender); } function vote(address _candidate) external onlyJoined { require(votingOpen, "Voting is not open"); require(isCandidate(_candidate), "Not a valid candidate"); require(!hasVoted[msg.sender], "Already voted"); votes[_candidate]++; hasVoted[msg.sender] = true; } function electJudge() internal { address newJudge = address(0); uint256 maxVotes = 0; for (uint256 i = 0; i < candidates.length; i++) { if (votes[candidates[i]] > maxVotes) { maxVotes = votes[candidates[i]]; newJudge = candidates[i]; } } judge = newJudge; emit JudgeElected(judge); // Reset for the next voting cycle for (uint256 i = 0; i < candidates.length; i++) { delete votes[candidates[i]]; } candidates = new address[](0); for (uint256 i = 0; i < voted.length; i++) { delete hasVoted[voted[i]]; } }
Каждый пользователь может выдвинуть свою кандидатуру отправив запрос, а также проголосовать.
Само голосование инициируется создателем контракта, но в более сложной системе можно создать автоматическое голосование каждые n дней.
function openVoting() external onlyOwner { require(!votingOpen, "Voting is already open"); votingOpen = true; } function closeVoting() external onlyOwner { require(votingOpen, "Voting is not open"); votingOpen = false; electJudge(); }
Конечно, не забудем и про вывод средств с аккаунта субъекта и возвращение залога:
function claimPledge() external onlyJoined { require(reputation[msg.sender] >= requiredReputation, "Not enough reputation to claim pledge"); uint256 amount = balances[msg.sender]; require(amount > 0, "No pledge to claim"); balances[msg.sender] = 0; payable(msg.sender).transfer(amount); emit PledgeClaimed(msg.sender, amount); }
В коде идет проверка на соответствие репутации пользователя и возврат средств, также есть возможность вывести личные средства, которые пользователь пополнял сверх комиссии:
function withdraw() external onlyOwner { uint256 amount = balances[msg.sender]; balances[msg.sender] = 0; payable(msg.sender).transfer(amount); }
Конечный результат позволяет работать с минимальной юрисдикцией, которая является добровольным объединением людей под прозрачными правилами для пользы каждого из них.
Таким образом мы получили действующий союз эгоистов(не государство!!!)
Вывод и пояснение
В конце концов, у нас получилось придумать действующую экстерриториальную юрисдикцию.
Очень важно различать виртуальное государство и экстерриториальные юрисдикции, ведь в данном случае мы получили нечто очень полезное на союз эгоистов.
Cоюз Эгоистов — добровольное и несистематическое объединение, являющееся альтернативой государству, данный союз поддерживается исключительно желанием его участников
Такое виртуальное объединение конечно не является полной альтернативой существующим государствам, но вполне могут дополнять их.
В любом случае такой подход более жизнеспособный, чем текущие виртуальные государства