Узел фундамента: как выглядит в разрезе, элементы гидроизоляции

Содержание

как выглядит в разрезе, элементы гидроизоляции

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

Содержание

  1. Определение ленточного фундамента
  2. Ленточный фундамент в разрезе
  3. Описание узлов гидроизоляции фундамента
  4. Защитные материалы
  5. Важные узлы ленточного фундамента
  6. Узел опоры фундамента на грунт
  7. Армирование
  8. Узел опоры пола первого этажа на фундамент
  9. Продухи

Определение ленточного фундамента

Ленточное основание

Данный тип фундамента имеет форму замкнутой конфигурации (ленты) из железобетона. Она выполняет функцию передачи нагрузки от стен помещения почве. На сторонах основания возводятся стены постройки. Применяют такой фундамент чаще в индивидуальном частном строительстве, нежели в промышленном. Если сравнивать с плитными основаниями, материальных и трудовых ресурсов уходит намного меньше, что обусловливает популярность железобетонных лент в дачном секторе. Это одна из наименее дорогостоящих разновидностей фундамента. На нем можно возводить здания, имеющие подвал или цокольный этаж.

Такое основание подходит только для устойчивых непучинистых грунтов. В случае с «проблемными» почвами лучше предпочесть сваи или плиту.

Ленточный фундамент в разрезе

Ленточный фундамент в разрезе

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

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

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

На вид ленточного фундамента в разрезе влияет и уровень заглубления. Если он небольшой (0,5-0,7 м), основание сможет выдержать лишь легкую постройку. Для строительства кирпичного дома оно не годится. В этом случае заглубление должно быть на 0,3 м ниже точки промерзания почвы.

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

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

Описание узлов гидроизоляции фундамента

Горизонтальная и вертикальная гидроизоляция

Перед  обустройством основания нужно проанализировать особенности почвы, в частности, грунтовых вод и других источников жидкости. Иногда влага поступает в грунт из фильтрационных вод. Избыточное содержание жидкости в близлежащих участках земли постепенно разрушает основание. Чтобы предотвратить это, нужно правильно организовать защиту. Для этого может использоваться дренажная система, уводящая воды от постройки. Также необходим гидроизоляционный фундаментный узел, защищающий толщу основания от попадания влаги. Проводится обкладывание слоями специальных материалов.

Распространенный вариант – окрасочные составы. Щебенку, пропитанную битумом (слой в 10 см) выравнивают раствором цемента марки 100. Затем поверхность грунтуют и наносят окрасочную изоляцию вида 1-5. Прежде чем укладывать конструкцию, делается цементная стяжка из того же раствора. Используют для изоляции и асфальтовые составы. В этом случае щебенку грунтуют битумом.

Защитные материалы

Узел гидроизоляции фундамента может быть выполнен из разных материалов. Их выкладывают на защищаемую поверхность послойно в 2-4 приема. Примерами могут быть:

  • окрасочная изоляция с применением материала вида 1-5;
  • оклеечная прослойка 7 либо 8 типа;
  • литая с сырьем типа 4.

Иногда практикуется комбинация разных видов материалов. Например, на загрунтованную щебенку с битумной пропиткой наносят асфальтную изоляцию типа 5. Затем на стяжку (3 см) и затирку (1 см) из цемента помещают материал для армирования (стеклоткань). Сверху наносится окрасочная изоляция 2 вида.

Литая Окрасочная Оклеечная

Важные узлы ленточного фундамента

Арматурный каркас

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

Узел опоры фундамента на грунт

Это расширяющаяся книзу подошва сваи в свайно-ленточном фундаменте. Она должна иметь достаточную площадь, для определения которой нужно знать несущую способность почвы. На 1 см² должен давить вес, равный половине этого параметра. У суглинистой почвы с повышенной влажностью несущая способность равна 1500 г/см², так что при возведении на ней постройки нужно обеспечить такую площадь подошвы, чтобы на см² давило не более 750 г.

Армирование

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

Узел опоры пола первого этажа на фундамент

Продухи в ленточном фундаменте

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

Продухи

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

Узлы фундаментов

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

Наружные стены с целью защиты от увлажнения рекомендуется выполнять со свесом по отношению к ленте фундамента не менее чем на 50 мм (Рис.1).

Стены из газобетонных блоков дополнительно должны быть гидроизолированы от капиллярного подсоса воды со стороны тяжелого бетона — железобетонного, сборного или монолитного, перекрытия и (или) железобетонного фундамента (Рис.1 и 2 и 3).

Первый ряд кладки рекомендуется укладывать на гидроизоляцию по слою цементно-песчаного раствора (не клея) толщиной не менее 20 мм.

Если выравнивающий шов из цементно-песчаного раствора получается толще 30 мм (до 45 мм), то в него необходимо утопить кладочную сетку по всей длине стены из проволоки диаметром 4-5 мм с ячейкой 50 мм.

В подвале здания при обеспечении требуемого для нормальной эксплуатации изделий из автоклавного газобетона влажностного режима (влажность воздуха не более 75 %) допускается устройство несущих внутренних стен из газобетонных блоков.

Варианты конструктивных решений узла примыкания кладки на ленточный фундамент представлены на рис. 1, 2 и 3.

Цоколь наружной стены на плитном фундаменте

При опирании стен на фундаментную плиту (Рис.4) цокольная часть кладки (высотой не менее 500 мм) должна быть гидроизолирована, как с наружной стороны стен (для защиты от снега), так и в месте опирания кладки на плиту.

С целью снижения теплопотерь располагающийся под свесом кладки торец фундаментной плиты рекомендуется утеплить. Толщина утеплителя определяется по расчету, но в любом случае должна составлять не менее 50 мм.

Утеплитель может располагаться как под свесом кладки (как показано на Рис.4), так и выступать за ее пределы (при толщине утеплителя большей ширины свеса).

В качестве утеплителя для данного конструктивного решения рекомендуется использовать изделия из экструдированного пенополистирола (ЭППС).

Источник: domekonom.su

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

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

Известен способ рихтовки каркаса здания, размещенного на просадочных грунтах, посредством рычагов и силовых домкратов [1]. Указанный способ является наиболее близким к изобретению.

Недостаток известного способа состоит в том, что для реализации технологического процесса рихтовки фундаментов и колонн каркаса необходимо изготавливать мощные силовые рычаги и выполнить значительный объем монтажных работ для сопряжения конца рычага с колонной, осадку которой необходимо ликвидировать. Второй недостаток — трудность применения способа рихтовки каркаса при выполнении колонн железобетонными.

Задачей настоящего изобретения является снижение трудоемкости рихтовки фундаментов и колонн каркаса до минимума.

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

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

На фиг.1 показан узел сопряжения фундамента и колонны в разрезе, на фиг. 2 — вид А-А на фиг.1, на фиг.3 — вид Б-Б на фиг.1, на фиг.4 — расчетная схема узла сопряжения фундамента и колонны (для примера конкретной реализации). Фундамент состоит из обоймы 1 и поршней 2. Полость обоймы заполнена песком, щебнем или шлаком 3 и т.п. В обойме 1 замоноличены анкерные трубы 4, работающие как на растяжение, так и на сжатие.

К верхнему торцу анкерной трубы 4 приварена гайка 5. В последнюю ввернут анкерный болт 6, снабженный опорной рихтующей гайкой 7. Эта же гайка 7 обеспечивает работу анкерных болтов 6 на сжатие. Гайка 8 анкерного болта 6 обеспечивает его работу на растяжение. Фундамент предназначен для опирания на него, например, двухветвевой колонны 9, каждая из ветвей которой снабжена анкерной двухконсольной балкой 10. Каждая из балок 10 опирается средней своей частью на поршень 2 фундамента, а каждая из консолей опирается на опорные гайки 7 и далее через анкерные болты 6, работающие на сжатие как сваи, на обойму 1. Каждая из консолей фиксируется анкерным болтом 6 и гайками 7 снизу. Трубки 11 предназначены для подачи воды под напором под поршень и вымывания наполнителя из-под него. Столики 12 (железобетонные или стальные) устанавливаются дополнительно после выравнивания осадки каждого из фундаментов.

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

Пример конкретной реализации рихтовки фундамента и колонн каркаса здания.

Эффективность разработанного устройства и способа рихтовки покажем на примере, приведенном в учебнике под редакцией проф. Беленя Е.И. [2, с. 363]. Максимальное расчетное сжимающее усилие в колонне Nmax=2108 кН=21080 гH (100%), минимальное усилие Nmin=576 кН=5760 гН (27,3%). Поршень фундамента должен передавать на грунтовое основание Nmm = 5760 гН (57,6 тс).

Фундамент рассчитаем на нормативные силы [2, c. 300]: q p /q н =1,59/1,34= 1,19 Nmах H =21080/1,19=17765,5 гН, Nmin H =5760/1,19=4854,3 гH.

Пусть здание построено на просадочных лессовидных суглинках, залегающих на глубину 10 м от поверхности земли. Передаваемая на грунт равномерно-распределенная нагрузка Pсоор=0,25 МПа=2,5 кгс/см 2 .

Напряжения под подошвой фундамента: Pсоор.ф=17765,5/72000=0,247 МПа.

Лессовидные грунты залегают до глубины 10,0 м и подстилаются водоупорными глинами. Уровень грунтовых вод находится на глубине 9,0 м.

После подтопления уровень грунтовых вод поднялся на 3,0 м, то есть поднялся до глубины 6,0 м.

Предполагается, что распределение влажности в толще лессовидных суглинков выше уровня грунтовых вод остается прежним, то есть 5% у поверхности земли и равномерно нарастая вблизи уровня грунтовых вод составит 29%. Необходимо определить полную осадку фундамента.

Производим разбивку толщи основания на расчетные слои.

Мощности слоев назначим по 1,0 м.

Результаты представлены в табл.1 и 2.

— загружаем два крана максимальным грузом и размещаем их над колонной, осадку которой хотим увеличить. Напряжения в грунте на отметке подошвы фундамента под поршнем возрастают в 3. 4 раза достигают критических и колонна в течение некоторого времени осаживается. Осадка продолжается до тех пор, пока зазор между низом базы колонны и опорными гайками не закроется.

Литература
1. RU 2139390 C1, Е 02 D 35/00, 10.10.1999.

2. Беленя Е.И. и др. Металлические конструкции. М.: Стройиздат, 1986-560 с.

3. Котов М.Ф. Механика грунтов в примерах. Высшая школа, М., 1968./Под ред. Н.Н. Маслова.

Источник: www.findpatent.ru

Фундаменты следует собирать на ровной сборочной площадке. Мелкие фундаменты удобно собирать на специальных сборочных столах (верстаках).

Большинство фундаментов обычно собирают в перевернутом положении (опорными планками вниз), что обеспечивает наиболее удобную сборку и совмещение опорных планок фундамента в одной плоскости.

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

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

Перед объемной сборкой фундаментов сваренные узлы должны быть выправлены.

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

Опорный лист или планки укладывают на сборочную площадку и после совмещения осей плотно прижимают и прихватывают к площадке по контуру.

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

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

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

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

При необходимости производится правка фундамента.

Готовые фундаменты принято маркировать краской (указывают заказ и номер чертежа).

Источник: www.stroitelstvo-new.ru

а, б—при незамкнутом контуре фундаментов пристройки, в- при звмкнутом контуре, 1 — арматура.

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

Конструктивные решения примыкания пристройки

На рис. 1 схематично покаэаны некоторые варианты примыкания фундамента пристройки к фундаменту дома по схеме неэамкнутого и замкнутого контуров.

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

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

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

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

В случае примыкания пристройки по схеме на рис. 1а это можно выполнить, просверлив в фундаменте дома отверстия диаметром, равным диаметру арматуры на глубину примерно 35 её диаметров (рис. 2, узел 1), и забив в них арматуру с выпуском такой же длины. Для арматуры 014 мм глубина выпуска составит 0,5 м.

При примыкании пристройки по схеме на рис. 1б, когда ширина фундамента под домом меньше 35 диаметров арматуры, отверстия в фундаменте дома просверливают на часть ширины, а арматуру забивают как анкер — с продольной прорезью на торце, в который перед забивкой вставляют расклинивающий вкладыш (рис. 2, узел 2).

При устройстве фундамента пристройки по схеме замкнутого контура (рис. 1д) отверстия просверливают в двух уровнях в шахматном порядке с

анкерным расклиниванием арматуры, на другом конце которой приваривают шайбу (рис. 2, узел 3).

Количество, шаг и диаметр арматуры определяют расчётом из условия наименьшего её сопротивления на срез или смятия под ней бетона.

Необходимость устройства жёсткого соединения фундаментов в первую очередь возникает, когда проектом пристройки предусмотрено её возведение под одной крышей с домом (рис. За,б,в).

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

При сборных ленточных фундаментах и цоколях обеспечить их надёжное соединение невозможно. А при применении столбчатых фундаментов жёсткое соединение возможно, когда высота единого монолитного ростверка-цоколя достаточна для размещения анкеров.

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

Источник: zhurnalko.net

Читайте также  Рустикальный дуб Поделитесь статьей в соц. сетях:

схема фундамента и пола подвала

Строительные материалы

Строительные материалы

Время на чтение: 4 минуты

АА

15826

Нет времени читать?

Отправим материал вам на:

Pocket

Flipboard


Нажимая на кнопку, вы даете согласие на обработку своих персональных данных

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

Содержание статьи

  • Составление проекта сооружения
  • Особенности обустройства цоколя дома
  • Подготовка к строительным работам
  • Высота
  • Гидроизоляция
  • Вентиляция
  • Стоимость выполнения работ
  • Варианты цоколя при различных типах фундамента
  • org/ListItem»> Ленточный фундамент
  • Свайно-винтовой фундамент
  • Ширина цоколя
  • Отделка цоколя снаружи
  • Порядок монтажа сайдинга
  • Заключение

Составление проекта сооружения

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

 Загрузка …

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

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

Для детализации делается выноска или ссылка на другой лист, где обустройство расписывается подробно.

Проектирование цокольного узла начинают с линии чистого пола, гидроизоляции и уровня грунта. Стены и их конструкции показываются на плане по заданию.

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

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

Особенности обустройства цоколя дома

Хотя цоколь и является главной деталью дома, не всем понятно, зачем он нужен. Его главная задача —  в происхождении слова.   Переводя итальянское «цокколо» — подножие строения, на котором возвышается конструкция.

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

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

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

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

  • Обустроенный цоколь позволяет сделать пол теплее в помещениях дома, поскольку есть некоторая воздушная прослойка;
  • Циркуляция воздуха в подвале будет значительно лучшей, что продлит срок использования цоколя;
  • Отделка фасада и стен делается выше, потому что есть цокольный этаж, что защищает её от намокания и повреждений механического свойства;
  • Возможно обустроить полноценный этаж под землей или подвал, расширив полезную площадь дома;
  • Если узлы примыкания цоколя и стен первого этажа, его пол, сделаны грамотно, то нагрузка всей конструкции будет равномерно распределена по фундаменту.

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

Подготовка к строительным работам

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

Высота

Типовая высота цоколя имеет около 50-70 сантиметров. Если делать её меньше, то подземный этаж будет малоэффективным, а сделав больше, становится возможным обустройство подвала целого этажа. Тогда высоту берут до полутора метров.

Гидроизоляция

Главным требованием к обустройству цоколя является правильная гидроизоляция, которая не допустит проникновения влаги в материал основания дома.

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

Вентиляция

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

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

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

Стоимость выполнения работ

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

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

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

Варианты цоколя при различных типах фундамента

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

Ленточный фундамент

При ленточном фундаменте дома цоколь можно сделать нескольких видов:

  • Монолитный, образующий конструкцию единого типа с основанием, поскольку заливается одновременно с ним;
  • Кирпичный, кладку которого делают поверх фундамента. Такой вариант лучше всего подойдет для дома из дерева;
  • Из бетонных плит, которые можно уложить поверх фундамента и в дальнейшем использовать как перекрытие.

Свайно-винтовой фундамент

При строительстве сооружения на свайном фундаменте можно выбрать один из следующих вариантов цоколя:

  • Навесной, который требует обрешетки по всему периметру дома. На ней крепится материал для облицовки. Все работы легко выполнимы собственноручно, но если нужен дом с теплыми подпольями, такой навес не подойдет;
  • Стена между сваями, закрывающая подпол дома;
  • При мелкозаглубленных фундаментах стоится по периметру ленточное основание и на него происходит укладка кирпичной стены.

Ширина цоколя

Каким бы ни был фундамент, цоколи домов можно разделить на следующие виды:

  • западающий, при котором стена значительно шире, чем само основание;
  • выступающий, когда основание шире, чем стены;
  • ровный, единой плоскости, при котором стена и основание находятся наравне.

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

Отделка цоколя снаружи

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

К тому же, заодно проходит процесс утепления цоколя.

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

Порядок монтажа сайдинга

Задать вопрос автору

Облицовка цоколя сайдингом происходит в следующей последовательности:

  • Делается обрешетка из металлического профиля. При монтаже тщательно проверяют каждый узел. Можно применить и каркас из дерева, но такая обрешетка будет не очень долго служить;
  • Закладывается теплоизоляция между планками, а также гидроизоляционный слой. Если строительство дома делается из дерева, то особенно тщательно нужно отделать каждый стык и узел;
  • На 8 см выше обрешетки ставится стартовая планка, после которой можно крепить и угловые планки для монтажа. Важно проверить их ровность по вертикали;
  • Панель сайдинга ставят на начальную планку и крепят саморезами;
  • В планку ставится вторая панель, прикрепляясь к первой. По такому способу проходят все стены по периметру;
  • Делается финишная отделка;
  • Ставят последнюю панель, обрезая её до нужного размера;
  • Монтируют угловые элементы.

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

Заключение

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

Стройку лучше делать летом, не оставляя незаконченной на зиму.

YouTube responded with an error: The request cannot be completed because you have exceeded your <a href="/youtube/v3/getting-started#quota">quota</a>.

Задать вопрос автору

Рейтинг автора

Написано статей

Об авторе

Архитектурно-конструктивные узлы. Общие данные: steel_c — LiveJournal

 

 

Архитектурно-конструктивные узлы

Узлы, необходимые для выполнения планов и разрезов здания:

— цокольный узел, включая конструкцию фундамента и пола первого этажа;

— узел опирания перекрытия на наружную стену, включая верх оконного проема и конструкцию пола;

— карнизный узел, включая чердачное перекрытие (если оно есть).

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

Архитектурно-конструктивные узлы должны быть обозначены на разрезе или планах. Место, подлежащее детализации, обводят замкнутой сплошной тонкой линией, от которой делается линия-выноска. Если узел должен быть сделан в сечении, на плане или разрезе через все элементы, изображенные на узле, проводят короткую основную сплошную линию и на ее продолжении – линию-выноску. На полке линии-выноски указывают номер узла. Если узел выполнен на другом листе, под полкой указывают номер листа с узлом.

Маркировку узла выполняют над его изображением в кружке 10-14 мм, в котором указывают его номер. Если узел обозначен на другом листе, маркировку выполняют в виде дроби, в числителе которой указывают номер узла, а в знаменателе – номер листа, на котором этот узел обозначен. Если изображение узла зеркально его обозначению на плане или разрезе, номер узла дается с индексом «н».

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

Уровень горизонтальной гидроизоляции, чаще всего выполняемой из двух слоев толя или рубероида на битумной мастике, в зданиях без подвала назначается ниже уровня пола первого этажа на 100-200 мм и выше уровня отмостки не менее чем на 200 мм. Горизонтальную гидроизоляцию желательно располагать на стыке фундамента и стены. Высоту цоколя (расстояние от уровня обреза фундамента до планировочной отметки земли) рекомендуется принимать не менее 500 мм.

При определении габаритов верхней части фундамента следует учитывать рекомендации, приведенные на рисунках 2.17-2.20. В двухслойных стенах фундамент устраивают под несущий внутренний слой, а в трехслойных – либо под всю стену, либо также под внутренний несущий слой. В последнем случае следует предусмотреть устройство опоры для наружного самонесущего слоя в виде консольной железобетонной плиты, защемленной в кладке несущего слоя. В зданиях с однородными стенами из ячеистобетонных блоков стена должна выступать за внешнюю грань фундамента не менее чем на 50 мм, но не более 1/3 толщины кладки.

При назначении глубины заложения фундамента (расстояние от уровня земли до подошвы) следует учитывать грунтовые условия и глубину промерзания грунта в районе строительства. При строительстве на непучинистых основаниях (например, крупный песок) глубина заложения фундамента под наружную стену в здании без подвала может приниматься минимальной (700 мм). В остальных случаях желательно глубину заложения назначать не менее глубины промерзания. Глубина заложения фундамента под внутренние стены не зависит от глубины промерзания и принимается не менее 500 мм.

Для отвода от стены дождевой и талой воды по периметру здания устраивают отмостку шириной не менее 700 мм с уклоном 3-5%. Наиболее распространенное решение отмостки – слой асфальта или цементно-песчаного раствора толщиной 30 мм по основанию из щебня, гравия или крупного песка толщиной не менее 150 мм. По внешней линии отмостки рекомендуется укладывать бордюрный камень сечением 80х150 мм.

На узле также следует показать конструкцию пола первого этажа по грунту или по лагам. Некоторые варианты устройства полов даны на рисунке 2.27. При расположении подготовки под пол выше уровня горизонтальной гидроизоляции следует предусмотреть устройство вертикальной гидроизоляции с внутренней стороны стены до верха подготовки. При близком расположении к поверхности земли грунтовых вод целесообразно утраивать горизонтальную гидроизоляцию по всей площади пола. Пример выполнения цокольного узла приведен на рисунке П2.17.

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

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

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

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

Рисунок Полы первого этажа зданий без подвалов (гидроизоляция условно не показана)

В зданиях с кирпичными стенами чаще всего с этой целью применяют сборные железобетонные перемычки, размеры поперечного сечения которых кратны размерам кирпича и зависят от величины действующих нагрузок и размера проема. Непосредственно под опорной частью балок или плит перекрытия укладывают несущие перемычки. Перемычки, которые воспринимают нагрузки только от кладки над проемом, имеют меньшую несущую способность, а, следовательно, и меньшие габариты, и являются ненесущими. Длина перемычек определяется в зависимости от размеров перекрываемого пролета и величины опирания их на стену (для несущих перемычек – не менее 250 мм, а для ненесущих – не менее 100 мм).

Варианты размещения перемычек в несущих и самонесущих однородных кирпичных стенах, а также таблица для определения их сечений приведены на рисунке 2.29.

 

 

 

Читать далее

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

https://verrsus.wordpress.com

http://verrsus-35rus. livejournal.com/

http://steel-c.livejournal.com/

всё про ремонт и обустройство жилья

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

Все об обустройстве фундамента-ленты

Особенности конструкции

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

В зависимости от степени углубления в почву различают мелкозаглубленную и полнозаглубленную конструкцию. Первый вариант используется для легких каркасных построек. Бетонная лента опускается в землю на 540-600 мм. Полнозаглубленный фундамент ставится под тяжелые постройки. Он углубляется на 240-300 мм ниже отметки уровня промерзания почвы. Иногда встречается незаглубленный вариант. Он ставится на неподвижных почвах или на скалах. Для домов он не пригоден, используется для хозяйственных построек.

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

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

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

Указание по производству строительно-монтажных работ

В верхнем окне Вы можете посмотреть наглядно пошаговая инструкция устройства ленточного фундамента своими руками. Само устройство заглубленного ленточного фундамента будет зависеть от нескольких факторов.
— Первым делом необходимо определить глубину промерзания в Вашем регионе, это делается очень легко. Определить глубину заложения можно с помощью нашей программы которая находится по данной ссылке: https://home-zagorod.ru/our_houses2/raschet-glubiny-lentochnogo-fundamenta-onlajn-kalkulyator-zalivka.html . После того когда вы определите глубину промерзание грунта, нам необходимо рассчитать глубину заложения самого фундамента, а она должна быть не менее чем на 150мм быть больше чем само промерзание. Наглядно это можете посмотреть в верхнем окне.
Далее переходим к строительству:
1 Укладываем геотекстиль между грунтом и песком с выпуском. Укладка между песком и щебнем рекомендуется, но по желанию.
2 Засыпаем песок с послойным тромбованием, конечный слой должен быть от 100мм-200мм.
3 Засыпаем щебень также с послойным тромбованием от 100мм-200мм.
Далее важный момент, нужно ли строить расширенную пятку или нет?
А тут уже нужно делать исследование грунта, где нам необходимо узнать его сопротивление, после чего посчитать вес дома и площадь опоры и сравнить с сопротивлением.
К примеру, если вес дома = 100 тонн, а площадь опоры 80м2 и считаем
100 000кг/80000см2 = 1,25 кг/см2.
К примеру если сопративление грунта у Вас 2,18 кг/см2 то получается что:
1,25 кг/см2 Чертежи ленточного фундамента:

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

План фундамента под перегородки

Схема армирования фундамента на отметки – 2.000

На данном чертеже Вы найдете все размеры котлована.

Схема армирования фундамента на отметки – 2.000, узел 1, 2, 3, 4

Схема армирования фундамента на отметки – 2.000, узел 5, 6, 7, 8

Схема армирования фундамента на отметки – 0.050

Схема армирования фундамента на отметки – 0.050, узел 8, 9, 10, 11

План фундамента сечение 1-1….4-4

План фундамента сечение 5-5….7-7

Спецификация элементов фундамента

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

Поделиться с друзьями:

Твитнуть

Поделиться

Поделиться

Отправить

Класснуть

Устройство плитного фундамента качественно и по доступной цене

Главная Технология строительства Фундаменты Плитный фундамент

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

Печать Отправить на E-mail

преимущества данного вида фундамента

способность быстро передвигаться в сторону смещения грунта предотвращая любые повреждения конструкции. Данное свойство является особенно важным при строительстве домов на «неблагоприятных» почвах.

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

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

Срок службы плитного фундамента более 50 лет

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

www.kir-bet.ru

стр. 1 из 2

ПЛИТНЫЙ ФУНДАМЕНТ

Узел А

Печать Отправить на E-mail


Узел Б

Печать Отправить на E-mail

К несомненным плюсам данного вида фундамента можно отнести

способность быстро передвигаться в сторону смещения грунта предотвращая любые повреждения конструкции. Данное свойство является особенно важным при строительстве домов на «неблагоприятных» почвах.

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

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

Срок службы плитного фундамента более 50 лет

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

Честно назовем недостатки плитного фундамента

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

Плитный фундамент разделяется на два основных вида: заглубленный и незаглубленный

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

ВАЖНО! Если существует большая вероятность значительных воздействий на фундамент со стороны грунтовых вод и подвижного грунта, то осуществляется его дополнительное укрепление – в грунт под плитой забиваются уплотняющие сваи или используются буронабивные элементы

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

ВАЖНО! До укладки бетонной смеси этап «Устройство фундамента» должен быть проверен и принят инженером технического надзора!

Выполнение настоящего этапа, является очень показательным видом работ для строительной компании! ПОМНИТЕ – качественный фундамент – это основа всего дома!
Работа должна выполняться профессионалами!

www.kir-bet.ru

стр. 2 из 2

Затрудняетесь с выбором?

Чтобы задать дополнительные вопросы, достаточно оставить онлайн заявку на нашем сайте или позвонить нашим менеджерам по телефону 8 (800) 551-56-90

Оставить заявку

Foundation — npm

Вы также можете проверить:

  • генератор-основа для быстрого создания пользовательских тем Foundation.
  • fashionista.js — простой способ украсить ваши приложения express.js с помощью пользовательских тем Foundation.

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

Домашняя страница: http://foundation.zurb.com
Документация: http://foundation.zurb.com/docs
Загрузка: http://foundation.zurb.com/download.php

Foundation имеет лицензию MIT и абсолютно бесплатное использование. Фонд был бы невозможен без поддержки всей команды ZURB, наших друзей и коллег, которые дали обратную связь, и некоторых светил, которые проделали тяжелую работу, которой мы воспользовались (спасибо, ребята).

  • Базовый исходный код и файлы компиляции для SCSS
  • Документы
  • README

Основание было изготовлено ZURB, компанией по разработке продуктов в Кэмпбелле, Калифорния.

Если Фонд сбивает вас с ног, как мы надеемся, и вы хотите большего, почему бы не проверить наши вакансии?

Большое спасибо всем людям, работающим над Foundation либо над улучшением базового кода, либо над поддержкой конкретных фреймворков. Если вы хотите ознакомиться с этим файлом ознакомительных сведений, отправьте электронное письмо по адресу [email protected], а если у вас есть вопросы, вы можете присоединиться к Неофициальной группе Google Foundation здесь: http://groups.google.com/group/foundation-framework-

WordPress (версии с пометкой 20.03.13)

  • Reactor Энтони Вильгельма с использованием Foundation версии 4
  • «Грезы» Чжэня с использованием Foundation версии 4
  • Угловой камень от Стивена Маллена с использованием версии Foundation v4.09
  • требуется+ Темы от required+ с использованием Foundation версии 3.25
  • Yeti от Modular Learning с использованием Foundation версии 3.2
  • Стартовая тема от Дрю Морриса с использованием Foundation версии 3
  • WP-Foundation от 320press с использованием Foundation версии 3
  • f415 Габор Яворски
  • Ядро Нарги от Нгуена Динь Куана

Joomla

  • Шаблон Joomla от Arnold Mwumva Ford, Meridian Softech
  • Шаблон Joomla от Энтони Дойла, Siege21

Drupal

  • Тема Drupal от Дрю Кеннелли
  • Zurb Foundation, поддерживающая F3. 2, F4 и Drupal 8, Ишмаэль Санчес, Крис Ли
  • Тема Zoundation от Андреа Бертон и Джеффа Грэма, FunnyMonkey

Альфред

  • Фонд Альфреда Джоша Медески (@joshmedeski)

PyroCMS

  • PyroYeti — Тема PyroCMS от Arnold Mwumva Ford, Meridian Softech

Джанго

  • Основополагающая тема для Pinax Кристофера Кларка, Квеси Агиллеры и Лендла Смита

MODX

  • Версия MODX Менно Питерсена

.NET

  • Пакет NuGet для ASP.Net MVC Эдвард Шарбено, @EdCharbeneau

Посредник

  • Скелет посредника Андреа Моретти

Magento

  • Magento и Фонд от Nandroid
  • Шаблон Waterlee от Джейка Шарпа

Python

  • Леса-пирамиды от Parker Pinette

CodeIgniter

  • Отзывчивый CodeIgniter BoilerPlate от Arnold Mwumva Ford, Meridian Softech

Shopify

  • Foundationify Shopify Тема Люка Басси

Другие реализации

  • Mobile First от Адама Фэйрхеда
  • Меньшая версия Джастина Марсана
  • Меньше с цветовой схемой Маталин Хэтчард

Редакторы

  • Textmate/Sublime Text2 Bundle от Liam R, @liamr

Шаблоны

  • PSD-шаблоны в сетке для настольных компьютеров, планшетов и телефонов, созданные Брюсом Абелем из Portfolio Creative Services Group
  • Веб-шаблоны HAML Питера Боннелла

Генератор сетки

  • Экспериментальный генератор сетки предоставлен Вилле Ванниненом

Средство отображения сетки

  • Букмарклет средства отображения сетки, автор Antoine Lefeuvre
  • Букмарклет с адаптивным дизайном Виктора Кулона
  • Вертикальная ритмическая сетка Букмарклет Кевина Альтмана

Модульные весы

  • Модульные весы Мэйсона Венделла и Скотта Келлума

Ruby on Rails Sass Gems

  • Foundation Icons 2 by J. P. Nowak

Yeoman Generator

  • Yeoman 1.0-Foundation 4 Леонард Богдонофф
  • Yeoman-Foundation от Винсента Мака

Настоящим предоставляется бесплатное разрешение любому лицу, получившему копию этого программного обеспечения и связанных с ним файлов документации («Программное обеспечение»), работать с Программным обеспечением без ограничений, включая, помимо прочего, права на использование, копирование, изменение , объединять, публиковать, распространять, сублицензировать и/или продавать копии Программного обеспечения, а также разрешать лицам, которым предоставляется Программное обеспечение, делать это при соблюдении следующих условий:

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

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, ПОМИМО ПРОЧЕГО, ГАРАНТИИ КОММЕРЧЕСКОЙ ПРИГОДНОСТИ, ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ И НЕНАРУШЕНИЯ ПРАВ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АВТОРЫ ИЛИ ОБЛАДАТЕЛИ АВТОРСКИМ ПРАВОМ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЕТЕНЗИИ, УЩЕРБ ИЛИ ИНУЮ ОТВЕТСТВЕННОСТЬ, БУДУТ СВЯЗАННЫЕ С ДОГОВОРОМ, ДЕЛОМ ИЛИ ИНЫМ ОБРАЗОМ, ВОЗНИКАЮЩИЕ ИЗ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ ИСПОЛЬЗОВАНИЯ ИЛИ ИНЫХ СДЕЛОК В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ.

Мир OpenJS 2021 — Фонд OpenJS

OpenJS World 2022 будет гибридным очным и виртуальным мероприятием в Остине, штат Техас, 7-8 июня 2022 года!

Подпишитесь, чтобы получать уведомления об открытии регистрации и CFP! »

Присоединяйтесь к профессионалам JavaScript, включая разработчиков, разработчиков программного обеспечения, сторонников разработчиков и лидеров бизнеса, на виртуальной глобальной конференции OpenJS. Подключайтесь, учитесь и сотрудничайте с членами сообщества из таких проектов, как AMP, Dojo, Electron и Node.js.

OpenJS World 2021 — это бесплатная полностью виртуальная среда. Учитесь у нашего сообщества спикеров и смотрите все наши сессии бесплатно на канале OpenJS Foundation YouTube!

  • Основные доклады
  • Общий путь
  • Трек безопасности
  • Дорожка производительности
  • Трек разработки
  • Трек сообщества
  • Путь автоматизации

Обратите внимание, что OpenJS World работает в соответствии с Кодексом поведения Linux Foundation Events.

Поделись своим восторгом!

Мы надеемся, что вы так же рады, как и мы, сотрудничать и взаимодействовать с сообществом OpenJS во время мероприятия! Если вам понравилось занятие, поделитесь своим волнением, используя официальный хэштег мероприятия #openjsworld21.

Основные доклады

Приветственный доклад: бурные двадцатые для JavaScript
Робин Джинн

Исполнительный директор, OpenJS Foundation

Тодд Мур

Вице-президент по открытым технологиям и разработчикам IBM

Разрумивание цепей передачи с JavaScript
Cian ó Maidín

Президент и основатель, ближайший

Восстановление баланса в технологии: Mrass Of The Indie Rock Die Die Die.
, Ford Foundation

Быстрое создание JavaScript для WebAssembly
Лин Кларк

Старший главный инженер-программист, Fastly

Netflix
Michael Jennings

Inclusion Strategy Partner, Product, Netflix

Panel: Getting Hired
Scott Hanselman

Partner Program Manager, Microsoft, Hanselminutes

Jerome Hardaway

Executive Director, VetsWhoCode

Зайнаб Эбрахими

Генеральный директор Florish

Сарон Йитбарек

Основатель Disco

Glamorous JavaScript: Makeup and Coding Education
Анна Литикал

Увлекательное и познавательное программирование Drag Queen и инженер Google

Дизайн игр Мышление + социальная справедливость
Эшлин Спарроу

Директор по технологиям обучения и ведущий дизайнер игр Чикагского университета | Ci3

Создание отличного веб-сайта с помощью AMP и TensorFlow.
js
Джеффри Хосе

Менеджер по продукту, AMP, Google

Сандип Гупта

Менеджер по продукту, TensorFlow, Google

Панель: Открытый исходный код и создание отличных мест для совместной работы
Бет Григгс

Старший инженер-программист, Red Hat

IBM Lead, Nojde

2 Nojde

2 Майкл Доусон и Red Hat

Джо Сепи

Инженер и защитник открытого исходного кода, IBM

Как открытое управление влияет на открытый исходный код и внутренний исходный код в GoDaddy
Чарли Роббинс

Старший директор по технике инженерии, UX Platform по адресу GODADDY

Джонатан Кеслин

Директор по инженерной инженерии, платформа UX AT GODADDY

Speaker Sension

.
  • Управление контейнерами с помощью JavaScript и gRPC — Лукас Сантос, Microsoft
  • Wrap WebdriverIO для создания вашей тестовой среды — Сумья Мукерджи, APTY. IO
  • Сдвиг влево и вправо для тестирования веб-приложения с CI — Николай Адволодкин, Sauce Labs
  • Пишите отличный код в облаке — Линда Николс, Microsoft
  • (Ͼ˳Ͽ)… Проверьте мой репозиторий!!! — Палома Оливейра, Sauce Labs
  • Kubernetes для всех — Сендил Кумарн, Uber
  • Интернет вещей (IoT) с узлом: и практично, и весело! — Джесси Горзински, IBM и Майкл Доусон, Red Hat
  • Автоматизация рабочих процессов разработчиков с помощью действий GitHub (CI/CD) — Брайан Дуглас, GitHub
  • Автоматизация как основной принцип ИТ — Жан Бурелье, Euler Hermes (Allianz Group)
  • Автоматизация пользовательского интерфейса с помощью WebdriverIO и Cucumber: надежная модульная структура BDD — Ольга Смоляр, InterSystems
  • Lightning Talk: что будет с Appium 2.0? — Джонатан Липпс, HeadSpin, руководитель проекта Appium
  • Сообщество
    • Lightning Talk: Создание сообщества внутри вашей компании — Жан Бурелье, Euler Hermes (Allianz Group)
    • JavaScript the Grumpy Parts — Роб Ричардсон, @rob_rich
    • Что такое открытый исходный код? — Тоби Лангель, UnlockOpen
    • Веб-монетизация и будущее рекламы — Бриана Марбери, Interledger Foundation
    • «Быстрое» введение в Fastify — Маттео Коллина, NearForm
    • Сделайте шаг к проектам с открытым исходным кодом — Тим Лай, SmartBear Software
    • Panel: Node. js Package Maintenance Working Group: Year 3 — Glenn Hinks, American Express; Бетани Григгс, Red Hat; Дарси Кларк, Github; Доминикас Блайз, NearForm; Родион Абдурахимов, Aspire Global
    • Рекомендации по диагностике Node.js — Гириш Пунатхил, IBM India и Мэри Марчини, Netflix
    • Совершите путешествие по JSLandia — Джо Сепи, IBM и Джори Берсон, Linux Foundation
    • Ответственное кодирование для лучшего будущего — Люсиль Джербер и Стефан Роде, IBM
    • Lightning Talk: обновление Node-RED — Ник О’Лири, руководитель проекта Node-RED
    • Содействие и демонстрация вашего роста в качестве разработчика Node.js — Дэвид Марк Клементс
    Развитие
    • Модернизация приложений с помощью Camel JavaScript и OpenShift — Ип Сэм и Вуксин Цзэн, Red Hat
    • Призрак приложения: фоновые службы — Максим Сальников, Microsoft
    • Дрожь, мои бревна! Рецепт переноса библиотек в модули ECMAScript — Бенджамин Коу, Google
    • Создание потока конденсаторов с помощью NativeScript и Ionic Friend — Натан Уокер, nStudio LLC
    • Type-Safe GraphQL с TypeScript — Аарон Пауэлл, Microsoft
    • Node. js: новое и экспериментальное — Бетани Григгс, Red Hat
    • Создание современных нативных надстроек для Node.js в 2021 году — Кевин Иди, Hive Streaming
    • Создание индивидуального интерфейса PWA с помощью Angular — Марк Томпсон, Google
    • Глубокая отладка Node.js — Гириш Пунатхил, IBM India
    • Один источник, чтобы править всеми — Джон Нидзвеки, Disney Streaming Services
    • Обновление до Fastify 3 — Остин Акерс, Microsoft
    Общий
    • Облачный ландшафт для разработчиков Node.js — Упкар Лиддер, IBM
    • Согласование Node.js с веб-платформой — Джеймс М. Снелл, NearForm
    • Режим JavaScript и оболочка MySQL — Дэвид Стоукс, Oracle
    • Умный дом на базе JavaScript без (почти) кода — Джоэл Лорд, Red Hat OpenShift
    • Lightning Talk: ML на стороне клиента — Muthukumarswamy B, Enquero
    • Lightning Talk: установщик Node-RED, автономный установщик с использованием Electron — Kazuhito Yokoi, Hitachi, Ltd.
    • ноутбуков в VS Code — Танха Кабир, Microsoft
    • Создание строго типизированных клиентов REST с помощью Typescript — Хосе Мануэль Эредиа Идальго, Microsoft
    • Открытие высокопроизводительных команд с открытым исходным кодом — Трейси Миранда, Linux Foundation
    • Тестирование модулей EcmaScript — Дэвид Марк Клементс
    • VS Code Советы и рекомендации — Харальд Киршнер, Microsoft
    • Содействие и демонстрация вашего роста как разработчика Node.js — Дэвид Марк Клементс
    Производительность
    • Можем ли мы удвоить пропускную способность HTTP-клиента Node.js? — Маттео Коллина, NearForm
    • Демистификация проблем с производительностью базы данных с помощью sqlcommenter — Ян Кляйнерт и Бала Чандрасекаран, Google
    • Безопасная обработка динамических данных с помощью TypeScript — Итан Арровуд, Microsoft
    • Наблюдение за Node.js: использование показателей для повышения производительности вашего приложения — Гильерме Эрмето, Netflix
    • Lightning Talk: связь на основе событий в сложной микросервисной архитектуре — Сапна Упрети и Прабал Рагхав, NodeXperts (подразделение последовательных технологий)
    • Приступайте к работе с WebAssembly — Роберт Абукхалил, Invitae
    Безопасность
    • Передовые методы создания образов Docker для Node. js — Liran Tal, Snyk
    • secure.AllTheThings() — Сделайте безопасность доступной для всех! — Кристиан Броманн и Джастин Долли, Sauce Labs
    • Webpackage — вероятно, одна из лучших возможностей сделать Интернет более безопасным и надежным — Владимир де Туркхейм, Datadog
    • Пространство для совместной работы по управлению уязвимостями пакетов и составлению отчетов для мира OpenJS — Дарси Кларк, Github и Уэс Тодд, Netflix
    Платиновые участники
    Золотые участники
    Серебряные участники

    Статистика нашего последнего мероприятия

    Обучение и сотрудничество жизненно важны для будущего сообщества OpenJS, и нам крайне важно, чтобы каждый в сообществе, который хочет участвовать, чувствовал добро пожаловать, независимо от пола, гендерной идентичности, сексуальной ориентации, инвалидности, расы, этнической принадлежности, возраста, религии или экономического положения. Кодекс поведения Linux Foundation описывает наши ожидания для всех, кто участвует в нашем сообществе, а также последствия неприемлемого поведения.

    Значок события CHAOSS D&I

    Присуждается за мероприятия в сообществе разработчиков ПО с открытым исходным кодом, которые продвигают здоровые методы D&I. Узнать больше.

    Ниже представлена ​​статистика участия в мероприятии OpenJS World 2020 года. Обратите внимание, что демографические вопросы участников являются необязательными для спикеров и участников и основаны только на ответах с согласием.

    Пол говорящего
    • Мужчина: 73%
    • Женщина: 26%
    • Недвоичный: <1%
    • Предпочитаю не отвечать: 0%
    Пол участника
    • Мужчина: 80%
    • Женщина: 14%
    • Недвоичный: 1%
    • Предпочитаю не отвечать: 5%
    Географическое представительство

    52 страны

    Наша приверженность разнообразию и инклюзивности
    • 0006
    • Нет всех мужских программ, основных составов или панелей
    • Докладчикам предлагается пройти бесплатный ознакомительный курс Linux Foundation Inclusive Speaker Orientation Course
    • .
    • Субтитры доступны на платформе этого года YouTube
    • Все основные доклады и сессии общедоступны во время мероприятия
    Обращайтесь к нам с идеями

    Если у вас есть идеи о том, как мы можем организовать более инклюзивное мероприятие, не стесняйтесь, дайте нам знать. Свяжитесь с Анжелой Браун, старшим вице-президентом и генеральным менеджером по мероприятиям, по адресу [email protected].

    Децентрализованный веб-узел DIF

    Статус спецификации: Проект

    Последний проект: identity.foundation/децентрализованный веб-узел/спецификация

    Предыдущий проект: 0.0.1-предварительный проект

    Редакторы:
    Даниэль Бюхнер (Блок)
    Тобиас Лукер (Маттр)
    Авторы:
    Генри Цай (Майкрософт)
    СиньАн Сюй (Майкрософт)
    Моэ Джангда (Блок)
    Принять участие:
    репозиторий GitHub
    Сообщить об ошибке
    История коммитов

    § Аннотация

    Большинство цифровых действий между людьми, организациями, устройствами и другими объектами требуют обмена сообщениями и данными. Для объектов, чтобы обмениваться сообщениями и данных для учетных данных, приложений или сервисных потоков, им нужен интерфейс, через который хранить, обнаруживать и извлекать данные, связанные с потоками и опытом, которыми они участие. Децентрализованный веб-узел (DWN) — это механизм хранения данных и ретрансляции сообщений. объекты могут использовать для поиска общедоступных или частных разрешенных данных, связанных с данным Децентрализованный идентификатор (DID). Децентрализованные веб-узлы представляют собой хранилище данных в виде сетки. которые позволяют объекту управлять несколькими узлами, которые синхронизируются с одним и тем же состоянием через друг друга, что позволяет владеющему субъекту защищать, управлять и передавать свои данные с другими, не полагаясь на местоположение или инфраструктуру конкретного поставщика, интерфейсы или механизмы маршрутизации.

    Децентрализованный веб-узел — это спецификация DRAFT , разрабатываемая в рамках Фонд децентрализованной идентификации (DIF). Это активный рабочий элемент Рабочая группа по безопасному хранению данных в DIF. Он включает в себя требования и выводы из связанной работы многих активных игроков отрасли в общий спецификация, отвечающая коллективным потребностям сообщества.

    Спецификация будет обновлена ​​с учетом отзывов членов DIF и более широкое сообщество с эталонной реализацией, разрабатываемой в рамках DIF который реализует функции и требования, определенные здесь. Мы поощряем рецензентов отправить вопросы GitHub в качестве средства для передачи отзывов и вкладов.

    § Терминология

    Децентрализованный веб-узел
    Децентрализованное хранилище личных данных и данных приложений и узел ретрансляции сообщений, как определено в спецификации децентрализованного веб-узла DIF. Пользователи могут иметь несколько Узлы, которые реплицируют свои данные между собой.
    Децентрализованные идентификаторы
    Строка уникального идентификатора URI и формат документа метаданных PKI для описания криптографические ключи и другие основные значения PKI, связанные с уникальным, управляемый пользователем самостоятельный идентификатор в целевой системе (например, блокчейн, распределенный реестр).

    § Топология

    § Технический стек

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

    Аутентификация DID
    Доступ и авторизация
    Определения интерфейсов
    Обработка для конкретного интерфейса
    Формат объекта
    Подписание объекта/шифрование
    Мультиформаты IPLD

    § Конечные точки службы

    Следующие записи конечной точки службы документов DID ДОЛЖНЫ присутствовать в документе DID целевого DID для разрешения относительного URL-адреса DID для правильного определения URI для обращения к децентрализованным веб-узлам владельца DID:

     {
      "id": "сделал:пример:123",
      "услуга": [{
        "id":"#dwn",
        "type": "Децентрализованный веб-узел",
        "Конечная точка службы": {
          "узлы": ["https://dwn. example.com", "https://example.org/dwn"]
        }
      }]
    }
     

    § Адресация

    Децентрализованные веб-узлы пользователя могут быть адресованы разными способами, но механизмы ниже ДОЛЖНЫ поддерживаться соответствующей реализацией децентрализованного веб-узла:

    § URL-адреса, относящиеся к DID

    Следующие конструкции URL-адресов DID используются для обращения к децентрализованным веб-узлам, которые оказались связанными с заданным DID, обнаруженным в процессе разрешения DID.

    § Состав

    Следующий процесс определяет, как составляется URL-адрес относительно DID для обращения к децентрализованному веб-узлу:

    1. Пусть базовая часть полномочий URI строки URL-адреса DID будет адресованным целевым DID.
    2. Добавьте параметр службы к строке URL-адреса DID со значением DecentralizedWebNode .
    3. Собрать массив объектов дескриптора сообщения по желанию для кодирования в URL-адресе, относящемся к DID
    4. JSON преобразует в строку массив объектов Message Descriptor из шага 3, затем Base64Url кодирует строковый вывод.
    5. Добавьте параметр запросов к строке URL-адреса DID со значением, заданным для строкового JSON, закодированного Base64Url вывода шага 4.

    URL-адреса, относящиеся к DID, состоят из следующих сегментов:

    сделал:пример:123 + ?service=DecentralizedWebNode + &queries= + toBase64Url( JSON.stringify( [{ DESCRIPTOR_1 }, { DESCRIPTOR_N }] ) )

     сделал:пример:123?service=DecentralizedWebNode&queries=W3sgTUVTU0FHRV8xIH0sIHsgTUVTU0FHRV9OIh2d...
     
    § Резолюция

    Следующий процесс определяет, как разрешается URL-адрес относительно DID для децентрализованного веб-узла:

    1. Разрешите DID в авторитетной части URL-адреса в соответствии с процессом разрешения децентрализованного идентификатора W3C, который возвращает документ DID для разрешенного DID.
    2. На что указывает наличие service , найдите запись DecentralizedWebNode в записях конечной точки службы документа DID.
    3. Проанализируйте объект DecentralizedWebNode Service Endpoint и выберите первый URI, присутствующий в массиве объектов serviceEndpoint узлов . ПРИМЕЧАНИЕ. Разработчикам СЛЕДУЕТ выбирать из URI в массиве узлов в порядке индекса.
    4. Если URI, указанный на шаге 3, не является URI DID, перейдите к шагу 5. Если URI из шага 3 является DID, определите DID и выполните шаги 2 и 3, чтобы выбрать первый URI в DID. DecentralizedWebNode Объект конечной точки службы узлов Массив, который не является DID URI. Не повторяйте этот цикл более одного раза — если URI без DID не может быть расположен после одного цикла рекурсивного разрешения, прекратите разрешение и выдайте ошибку.
    5. Предполагая, что на шагах 2–4 был обнаружен URI без DID, пусть найденный URI будет базовым URI создаваемого запроса децентрализованного веб-узла.
    § Строительство запроса

    Пример URL-адреса относительно DID для передачи нескольких сообщений:

    ПРИМЕЧАНИЕ

    Например, приведенное ниже значение параметра запросов не является ни строковым JSON, ни кодированием Base64Url, но должно быть при использовании URL-адресов децентрализованных веб-узлов на практике (см. Инструкции по составлению URL-адресов относительно DID выше).

     сделал:пример:123?service=DecentralizedWebNode&queries=[{ "method": "RecordsQuery", "schema": "https://schema.org/SocialMediaPosting" }]
     
     сделал:пример:123?service=DecentralizedWebNode&queries=W3sgTUVTU0FHRV8xIH0sIHsgTUVTU0FHRV9OIh2d...
     

    Разрешить DID, чтобы найти его URI децентрализованного веб-узла:

    did:example:123 —> разрешение на конечную точку децентрализованного веб-узла —> https://dwn.example.com/

    Создание объекта запроса :

    1. Создайте объект JSON для запроса.
    2. Объект запроса ДОЛЖЕН включать свойство messages и его значение ДОЛЖЕН быть массивом, состоящим из объектов Message, которые генерируются путем анализа значения параметра запросов URL-адреса, относящегося к DID, в виде массива JSON и выполнения следующих шагов для каждой записи:
      1. Создание объекта сообщения.
      2. Установите свойство дескриптора объекта Message на запись, убедившись, что это допустимый объект дескриптора сообщения.
      3. Установить свойство recordId объекта Message, соответствующее адресуемой записи.
      4. Дополните объект Message любыми необходимыми значениями подписи и авторизации, как описано в разделе «Сообщения».
      5. Добавить объект в массив сообщений объекта запроса.

    Пример HTTP POST:

     ПОЧТА https://dwn.example.com/
    ТЕЛО {
      "Сообщения": [
        {
          "дескриптор": {
            "метод": "RecordsQuery",
            "схема": "https://schema.org/SocialMediaPosting"
          }
        },
        {...}
      ]
    }
     

    § Объекты запроса

    Объекты запроса

    — это конверты объектов JSON, используемые для передачи сообщений на децентрализованные веб-узлы.

     { // Объект запроса
      "messages": [ // Объекты сообщений
        {...},
        {...},
        {...}
      ]
    }
     

    Объекты запросов состоят из следующих элементов:

    1. Объект запроса ДОЛЖЕН включать свойство messages , а его значение ДОЛЖНО быть массивом, состоящим из объектов Message.

    § Сообщения

    Все сообщения децентрализованного веб-узла передаются через объекты JSON сообщений. Эти объекты содержат параметры выполнения сообщения, материалы авторизации, подписи авторизации и информацию о подписи/шифровании. Для различных целей сообщения полагаются на CID IPFS и API-интерфейсы DAG.

     { // Объект запроса
      "messages": [ // Объекты сообщений
        {
          "recordId": GENERATED_CID_STRING,
          "данные": BASE64URL_STRING,
          "дескриптор": {
            "метод": INTERFACE_METHOD_STRING,
            "dataCid": DATA_CID_STRING,
            "формат данных": DATA_FORMAT_STRING,
          }
        },
        {...}
      ]
    }
     

    Объекты сообщений ДОЛЖНЫ составляться следующим образом:

    Чтобы включить функции репликации данных для децентрализованного веб-узла, все сообщения ДОЛЖНЫ быть зафиксированы в IPFS DAG в дереве, выделенном для DID владельца, после составления и фиксации всех поддеревьев. Объекты Message верхнего уровня ДОЛЖНЫ быть зафиксированы как объект, закодированный DAG CBOR.

    • Объекты сообщений ДОЛЖНЫ содержать свойство recordId со значением ДОЛЖЕН быть строковым CID версии 1 исходной записи для рассматриваемой логической записи, сгенерированным путем выполнения следующего процесса генерации идентификатора записи для исходной записи записи:
      1. Создайте объект JSON следующего состава:
        • recordId Объект генерации CID ДОЛЖЕН содержать свойство descriptorCid , а его значение ДОЛЖНО быть строковым CID версии 1 DAG CBOR, закодированным0719 дескриптор объект.
      2. DAG CBOR кодирует составной объект.
      3. Сгенерируйте CID версии 1 из закодированного объекта DAG CBOR и выведите его в строковой форме.
    • Объекты сообщений МОЖЕТ содержать свойство данных , и если оно присутствует, его значение ДОЛЖНО быть закодированной строкой данных сообщения base64Url .
    • Объекты сообщения ДОЛЖЕН содержат свойство дескриптора , а его значение ДОЛЖНО быть объектом, составленным следующим образом:
      • Объект ДОЛЖЕН содержать свойство method , а его значение ДОЛЖНО быть строкой, соответствующей методу интерфейса децентрализованного веб-узла.
      • Если с сообщением связаны данные, переданные непосредственно через свойство data сообщения или внешний канал (например, выборка IPFS), дескриптор объект ДОЛЖЕН содержать свойство dataCid , а его значение ДОЛЖНО быть строковым CID версии 1 закодированных данных DAG PB.
      • Если с сообщением связаны данные, переданные непосредственно через свойство данных объекта сообщения или через канал, внешний по отношению к объекту сообщения, объект дескриптора ДОЛЖЕН содержать свойство dataFormat , и его значение ДОЛЖЕН быть строкой, которая соответствует зарегистрированному формату данных IANA Media Type (наиболее распространенным является простой JSON, на что указывает установка значения свойства dataFormat в application/json ), или один из следующие строки формата ожидают регистрации:
        • application/vc+jwt — данные представляют собой вариант проверенных учетных данных W3C в формате JSON Web Token (JWT) [RFC7519].
        • приложение/vc+ldp — данные представляют собой проверяемые учетные данные W3C в формате JSON-LD.

    ПРИМЕЧАНИЕ

    Отдельные методы интерфейса могут описывать дополнительные свойства, которые дескриптор объект ДОЛЖЕН содержать или МОЖЕТ , которые подробно описаны в разделе спецификации «Интерфейсы».

    § Авторизация сообщения

    Для обработки некоторых сообщений может потребоваться авторизационный материал в соответствии с разрешениями, указанными владельцем децентрализованного веб-узла. Если сообщение требует авторизации, оно ДОЛЖЕН включать свойство авторизации со значением, которое является [RFC7515] общей веб-подписью JSON (JWS), построенной следующим образом:

     { // Объект запроса
      "messages": [ // Объекты сообщений
          "данные": "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",
          "recordId": "b65b7r8n7bewv5w6eb7r8n7t78yj7hbevsv567n8r77bv65b7e6vwvd67b6",
          "дескриптор": {
            "метод": "ЗаписьЗаписей",
            "схема": "https://schema. org/SocialMediaPosting",
            "dataCid": CID(данные),
            "дата создания": 123456789,
            "формат данных": "приложение/json"
          },
          "аттестация": {
            "полезная нагрузка": "89f5hw458fhw958fq094j9jdq0943j58jfq09j49j40f5qj30jf",
            "подписи": [{
              "защищено": "4d093qj5h4f9j204fq8h5398hf9j24f5q9h83402048h553q",
              "подпись": "49jq984h97qh4a49j98cq5h48j09jq9853h509jjq09h5q9j4"
            }]
          },
          "авторизация": {
            "полезная нагрузка": "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",
            "подписи": [{
              "защищено": "f454w56e57r68jrhe56gw45gw35w65w4f5i54c85j84wh5jj8h5",
              "подпись": "5678nr67e56g45wf546786n9т78р67е45657берн797т8р6е5"
            }]
          }
        },
        {...}
      ]
    }
     
    • JWS ДОЛЖЕН включать защищенное свойство , а его значение должно быть объектом, состоящим из следующих значений:
      • Объект ДОЛЖЕН включать свойство alg , а его значение ДОЛЖНО быть строкой, представляющей алгоритм, используемый для проверки подписи (согласно спецификации [RFC7515] JSON Web Signature).
      • Объект ДОЛЖЕН включать свойство kid , а его значение ДОЛЖНО быть строкой URL-адреса DID, идентифицирующей ключ, который будет использоваться при проверке подписи.
    • JWS ДОЛЖЕН включать свойство полезной нагрузки , а его значение должно быть объектом, состоящим из следующих значений:
      • Объект ДОЛЖЕН включать descriptorCid , а его значение ДОЛЖНО быть строковым CID версии 1 объекта DAG CBOR, закодированного дескриптор .
      • Объект МОЖЕТ включать свойство permissionsGrantCid , а его значение ДОЛЖНО быть строковым идентификатором CID версии 1 DAG CBOR, закодированным грантом разрешения, который вызывается.
      • Если аттестация объекта разрешена, полезная нагрузка МОЖЕТ включать свойство attestationCid , а его значение ДОЛЖНО быть строковым CID версии 1 строки аттестации , закодированной DAG CBOR.

    § Исходные данные

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

     { // Сообщение
      "данные": BASE64URL_STRING,
      "recordId": "b65b7r8n7bewv5w6eb7r8n7t78yj7hbevsv567n8r77bv65b7e6vwvd67b6",
      "дескриптор": {
        "метод": "ЗаписьЗаписей",
        "схема": "https://schema. org/InviteAction",
        "dataCid": CID(данные),
        "дата создания": 123456789,
        "формат данных": "приложение/json"
      }
    }
     

    § Подписанные данные

    Если объект должен быть заверен подписывающей стороной (например, владельцем узла посредством подписи с помощью своего ключа DID), объект ДОЛЖЕН содержать следующие дополнительные свойства для создания общей веб-подписи JSON (JWS) [RFC7515]:

     { // Сообщение
      "данные": {...},
      "recordId": "b65b7r8n7bewv5w6eb7r8n7t78yj7hbevsv567n8r77bv65b7e6vwvd67b6",
      "дескриптор": {
        "метод": "ЗаписьЗаписей",
        "схема": "https://schema.org/InviteAction",
        "dataCid": CID(данные),
        "дата создания": 123456789,
        "формат данных": "приложение/json"
      },
      "аттестация": {
        "полезная нагрузка": "89f5hw458fhw958fq094j9jdq0943j58jfq09j49j40f5qj30jf",
        "подписи": [{
          "защищено": "4d093qj5h4f9j204fq8h5398hf9j24f5q9h83402048h553q",
          "подпись": "49jq984h97qh4a49j98cq5h48j09jq9853h509jjq09h5q9j4"
        }]
      }
      . ..
    }
     

    Сторона, создающая сообщение ДОЛЖНА создать подписанный объект сообщения следующим образом:

    1. Объект сообщения ДОЛЖЕН содержат свойство аттестации , а его значение ДОЛЖНО быть общим объектным представлением веб-подписи [RFC7515] JSON, составленным следующим образом:
      • Объект должен включать свойство полезной нагрузки , а его значение должно быть строковым CID версии 1 дескриптора DAG CBOR, закодированного объекта , состав которого определяется в разделе Message Descriptor. эта спецификация.
      • Объект ДОЛЖЕН включать защищенное свойство , а его значение должно быть объектом, состоящим из следующих значений:
        • Объект ДОЛЖЕН включать свойство alg , а его значение ДОЛЖНО быть строкой, представляющей алгоритм, используемый для проверки подписи (согласно спецификации [RFC7515] JSON Web Signature).
        • Объект ДОЛЖЕН включать свойство kid , а его значение ДОЛЖНО быть строкой URL-адреса DID, определяющей ключ, который будет использоваться при проверке подписи.
      • Объект ДОЛЖЕН включать свойство подпись , а его значение должно быть строкой подписи, созданной путем подписания защищенных значений и полезной нагрузки , в соответствии с [RSON JFC75 Web15 Signature15] Спецификация.

    § Зашифрованные данные

    Если объект должен быть зашифрован (например, владелец узла шифрует свои данные, чтобы сохранить их в тайне), дескриптор объект ДОЛЖЕН быть построен следующим образом:

     { // Сообщение
      "данные": {
        "защищено": ...,
        "получатели": ...,
        "зашифрованный текст": . ..,
        «ив»: ...,
        "ярлык": ...
      },
      "recordId": "b65b7r8n7bewv5w6eb7r8n7t78yj7hbevsv567n8r77bv65b7e6vwvd67b6",
      "дескриптор": {
        "метод": "RecordsQuery",
        "схема": "https://schema.org/SocialMediaPosting"
      }
      ...
    }
     

    Сторона, создающая сообщение ДОЛЖНА составить зашифрованное сообщение следующим образом:

    1. Свойство шифрование объекта дескриптора ДОЛЖНО быть установлено в значение метки строки поддерживаемого формата шифрования.
    2. Создать зашифрованную полезную нагрузку из данных, соответствующих формату, указанному в свойстве шифрования
    3. Создайте CID версии 1 из полезной нагрузки, созданной на шаге 2, и дайте dataCid свойство объекта дескриптора быть строковым представлением CID.

    § Подписанные и зашифрованные данные

    Если объект должен быть одновременно атрибутирован подписывающей стороне и зашифрован, он ДОЛЖЕН быть структурирован следующим образом:

     { // Сообщение
      "данные": {
        "защищено": . ..,
        "получатели": ...,
        "зашифрованный текст": ...,
        «ив»: ...,
        "ярлык": ...
      },
      "recordId": "b65b7r8n7bewv5w6eb7r8n7t78yj7hbevsv567n8r77bv65b7e6vwvd67b6",
      "дескриптор": {
        "метод": "RecordsQuery",
        "схема": "https://schema.org/SocialMediaPosting"
      },
      "аттестация": {
        "полезная нагрузка": "89f5hw458fhw958fq094j9jdq0943j58jfq09j49j40f5qj30jf",
        "подписи": [{
          "защищено": "4d093qj5h4f9j204fq8h5398hf9j24f5q9h83402048h553q",
          "подпись": "49jq984h97qh4a49j98cq5h48j09jq9853h509jjq09h5q9j4"
        }]
      },
    }
     

    Сторона, создающая сообщение ДОЛЖНА построить подписанное и зашифрованное сообщение следующим образом:

    1. Следуйте инструкциям, описанным в разделе «Зашифрованные данные», чтобы добавить необходимые свойства в дескриптор и создать объект [RFC7516] JSON Web Encryption (JWE) из связанных данных.
    2. Следуйте инструкциям, описанным в разделе «Подписанные данные», чтобы добавить свойство аттестации с общим объектным представлением веб-подписи [RFC7515] JSON в качестве значения.

    § Объекты ответа

    Ответы на вызовы метода интерфейса представляют собой объекты JSON, которые ДОЛЖНЫ быть сконструированы следующим образом:

    1. Объект МОЖЕТ иметь свойство состояния , если ошибка вызвана общей проблемой, связанной с запросом, и если присутствует, его значение ДОЛЖНО быть объектом, состоящим из следующих свойств:
      • Объект состояния ДОЛЖЕН иметь свойство code , а его значение ДОЛЖНО быть целым числом, равным коду состояния HTTP, соответствующему состоянию ответа.
      • Статус объекта МОЖЕТ иметь свойство detail , и если оно присутствует, его значение ДОЛЖНО быть строкой, описывающей краткую сводку состояния. рекомендуется , чтобы разработчик установил в тексте сообщения стандартный заголовок кода состояния HTTP, если заголовок/сообщение уже определены для этого кода.
    2. Объект МАЙ имеет свойство ответов и, если присутствует, его значение ДОЛЖЕН быть массивом, содержащим Message Result Objects для всех сообщений, которые были включены в инициирующий объект запроса. Объекты результата сообщения ДОЛЖНЫ располагаться в порядке индексов, который соответствует индексу соответствующего сообщения запроса каждого результата. Message Result Objects построены следующим образом:
      1. Объект ДОЛЖЕН иметь свойство состояния и его значение ДОЛЖЕН быть объектом, состоящим из следующих свойств:
        • Объект состояния ДОЛЖЕН иметь свойство code , а его значение ДОЛЖНО быть целым числом, равным коду состояния HTTP, соответствующему состоянию ответа.
        • Объект состояния МОЖЕТ иметь подробное свойство , и если оно присутствует, его значение ДОЛЖНО быть строкой, описывающей краткую сводку состояния. это рекомендовал , чтобы разработчик установил в тексте сообщения стандартный заголовок кода состояния HTTP, если для этого кода уже определен заголовок/сообщение.
      2. Объект МАЙ имеет свойство записей , если запрос сообщения был успешным. Если присутствует, его значение ДОЛЖНО быть результирующими записями сообщения, возвращаемыми при вызове соответствующего сообщения.
    § Кодирование состояния на уровне запроса

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

    Целевой DID не найден

    Если DID, на который нацелен объект запроса, не найден в децентрализованном веб-узле, реализация ДОЛЖНА создать статус уровня запроса с кодом 404 , а СЛЕДУЕТ использовать Целевой DID, не найденный в децентрализованном веб-узле , в качестве значения детали статуса .

    Пример ответа:

    ПРИМЕР

     {
      "положение дел": {
        "код": 404,
        "detail": "Целевой DID не найден в децентрализованном веб-узле"
      }
    }
     

    Общие ошибки обработки на уровне запросов

    Если при обработке возникает общая ошибка на уровне запроса, которая не охватывается одним из конкретных случаев состояния выше и не позволяет реализации правильно оценить запрос, реализация ДОЛЖНА создать статус уровня запроса с code 500 и ДОЛЖНЫ использовать Запрос не может быть обработан как значение детали состояния .

    Пример ответа:

    ПРИМЕР

     {
      "положение дел": {
        "код": 500,
        "detail": "Запрос не может быть обработан корректно"
      }
    }
     
    § Кодирование состояния на уровне сообщений

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

    Сообщение успешно обработано для интерфейса запроса/чтения, который ожидает результатов

    Если сообщение обрабатывается корректно и ожидается набор результатов записей , реализация ДОЛЖНА включать объект состояния уровня сообщения с его свойством code , установленным на 200 , и 9021 SHOULD 905 использование Сообщение было успешно обработано как значение статуса подробностей .

    ПРИМЕЧАНИЕ

    Если результаты не найдены, статус остается 200 , а реализация ДОЛЖНА возвращать пустой массив записей .

    Пример запроса:

     { // Объект запроса
      "messages": [ // Объекты сообщений
        {
          "дескриптор": {
            "метод": "RecordsQuery",
            "схема": "https://schema.org/SocialMediaPosting"
          }
        },
        ...
      ]
    }
     

    Пример ответа:

    ПРИМЕР

     {
      "ответы": [
        {
          «статус»: { «код»: 200, «подробности»: «ОК» },
          "записи": [...]
        }
      ]
    }
     

    Сообщение неправильно составлено

    Если сообщение искажено или создано с использованием недопустимых свойств/значений, реализация ДОЛЖНА включать объект состояния уровня сообщения с его свойством code , установленным на 400 , и 72 29 2 ДОЛЖЕН использовать Сообщение было неправильно сформировано или неправильно составлено как значение подробностей состояния .

    Пример запроса:

     { // Объект запроса
      "messages": [ // Объекты сообщений
        {
          "дескрипторизация": {
            "методический": "RecordsQuery",
            "схемы": "https://schema.org/SocialMediaPosting"
          }
        }
      ]
    }
     

    Пример ответа:

    ПРИМЕР

     {
      "ответы": [
        {
          "status": { "code": 400, "detail": "Сообщение было неправильно сформировано или составлено неправильно" }
        }
      ]
    }
     

    Сообщение не соответствует требованиям авторизации

    Если сообщение не соответствует требованиям авторизации во время обработки, реализация ДОЛЖНА включать объект состояния уровня сообщения с его свойством code , установленным на 401 , и СЛЕДУЕТ использовать сообщение 2 90 неудачные требования авторизации в качестве значения детали состояния .

    Пример запроса:

     { // Объект запроса
      "messages": [ // Объекты сообщений
        { // Сообщение
          "данные": {...},
          "дескриптор": {
            "recordId": "b6464162-84af-4aab-aff5-f1f8438dfc1e",
            "dataCid": CID(данные),
            "дата создания": 123456789`авторизация` СВОЙСТВО ОТСУТСТВУЕТ
        }
      ]
    }
     

    Пример ответа:

    ПРИМЕР

     {
      "ответы": [
        {
          «статус»: { «код»: 401, «подробности»: «ОК» }
        }
      ]
    }
     

    Интерфейс не реализован

    Если сообщение пытается вызвать интерфейс метод , который не поддерживается реализацией, реализация ДОЛЖНА включать объект состояния уровня сообщения с его code свойство установлено в 501 , и ДОЛЖЕН использовать Метод интерфейса не реализован как значение детали состояния .

    Пример запроса:

     { // Объект запроса
      "messages": [ // Объекты сообщений
        { // Сообщение
          "данные": {...},
          "дескриптор": {
            "dataCid": CID(данные),
            "метод": "ЗаписьЗаписей",
            "схема": "https://schema.org/LikeAction",
            "формат данных": "приложение/json"
          }
        }
      ]
    }
     

    Пример ответа:

    ПРИМЕР

     {
      "ответы": [
        {
          "положение дел": {
            "код": 501,
            "detail": "Метод интерфейса не реализован"
          }
        }
      ]
    }
     

    Превышен лимит потребления ресурсов

    Если экземпляр узла DWeb, получивший запрос, определил, что уровень потребления ресурсов превысил допустимые пределы, и не может обработать запрос, экземпляр ДОЛЖЕН ответ со следующей записью состояния:

    Пример ответа:

    ПРИМЕР

     {
      "ответы": [
        {
          "положение дел": {
            "код": 429,
            "detail": "Потребление ресурсов превысило допуски"
          }
        }
      ]
    }
     

    § Интерфейсы

    § Обнаружение признаков

    Спецификация децентрализованного веб-узла определяет общепризнанные конфигурации децентрализованного веб-узла для максимизации интероперабельность (см. Конфигурации), но разработчики могут захотеть поддерживать пользовательский подмножество интерфейсов и функций. Интерфейс Feature Detection — это средство, который децентрализованный веб-узел выражает поддержку интерфейсов и функций, которые он реализует.

    § Модель данных

    Соответствующий требованиям децентрализованный веб-узел ДОЛЖЕН создавать объект обнаружения функций определяется следующим образом:

     {
      "тип": "Обнаружение признаков",
      "интерфейсы": {...}
    }
     
    § Свойства и значения

    Для объекта Feature Detection определены следующие свойства и значения:

    • Объект ДОЛЖЕН включать свойство интерфейсов и его значение ДОЛЖЕН быть объектом, составленным следующим образом:
      • Объект МАЙ содержит свойство записей . Если имущества нет, это указывает на то, что реализация децентрализованного веб-узла не поддерживает какие-либо методы интерфейса. Если свойство присутствует, его значение ДОЛЖНО быть объектом, который МОЖЕТ включать любой из следующие свойства, где логическое значение true указывает на поддержку интерфейса метод, а логическое значение false значение или отсутствие свойства указывает на интерфейс метод не поддерживается:
        • Рекордсзапрос
        • ЗаписиЗапись
        • RecordsCommit
        • ЗаписиУдалить
      • Объект МАЙ содержит свойство разрешений . Если имущества нет, это указывает на то, что реализация децентрализованного веб-узла не поддерживает какие-либо методы интерфейса. Если свойство присутствует, его стоимость ДОЛЖЕН быть объектом, который МОЖЕТ включать любой из следующие свойства, где логическое значение true указывает на поддержку интерфейса метод, в то время как логическое значение false или отсутствие свойства указывает на интерфейс метод не поддерживается:
        • Запрос разрешений
        • Предоставление разрешений
        • Отзыв разрешений
      • Объект МАЙ содержит свойство hooks . Если имущества нет, это указывает на то, что реализация децентрализованного веб-узла не поддерживает какие-либо методы интерфейса. Если свойство присутствует, его значение ДОЛЖНО быть объектом, который МОЖЕТ включать любой из следующие свойства, где логическое значение true указывает на поддержку интерфейса метод, в то время как логическое значение false или отсутствие свойства указывает на интерфейс метод не поддерживается:
        • HooksWrite
        • Хуксзапрос
        • ХукиУдалить
    • Объект МОЖЕТ содержать свойство обмена сообщениями , а его значение МОЖЕТ быть объектом, состоящим из следующего:
      • Объект МОЖЕТ содержать свойство пакетной обработки , и если оно присутствует, его значение ДОЛЖНО быть логическим, указывающим, обрабатывает ли децентрализованный веб-узел несколько сообщений в одном запросе. Отсутствие этого свойства должен указывать, что децентрализованный веб-узел поддерживает несколько сообщений в одном запросе, поэтому, если разработчик не поддерживает несколько сообщений в запросе, они ДОЛЖНЫ включать это свойство и явно устанавливать его значение false .
    § Читать

    Все совместимые децентрализованные веб-узлы ДОЛЖНЫ отвечать действительным объектом обнаружения функций при получении следующий объект запроса:

     { // Сообщение
      "descriptor": { // Дескриптор сообщения
        "метод": "FeatureDetectionRead"
      }
    }
     

    § Записи

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

    §
    Рекордзапрос

    Сообщения RecordsQuery представляют собой объекты JSON, которые включают в себя общие свойства дескриптора сообщения и следующие дополнительные свойства, которые должны быть составлены следующим образом:

    • Объект сообщения ДОЛЖЕН содержать свойство дескриптора , а его значение ДОЛЖНО быть объектом JSON, составленным следующим образом:
      • Объект ДОЛЖЕН содержать свойство метода , а его значение ДОЛЖНО быть строкой RecordsQuery .
      • Объект МОЖЕТ содержать свойство filter , и если оно присутствует, его значение ДОЛЖНО быть объектом, который МОЖЕТ содержать следующие свойства:
        • Объект МАЙ содержит свойство схемы и, если присутствует, его значение Должен быть строкой URI, указывающей схему связанных данных.
        • Объект МОЖЕТ содержать свойство recordId , и его значение ДОЛЖНО быть Идентификатором вычисляемой записи .
        • Объект МОЖЕТ содержать свойство contextId , и его значение ДОЛЖНО быть детерминированным идентификатором для контекстно связанного набора объектов.
        • Объект МОЖЕТ содержать свойство протокола , и его значение Должен быть URI, обозначающим протокол, частью которого является объект.
          • Если объект содержит свойство протокола , объект ДОЛЖЕН также содержать свойство protocolVersion , а его значение Должен быть строкой SemVer, обозначающей версию протокола, частью которого является объект из.
        • Объект МОЖЕТ содержать свойство dataFormat , а его значение ДОЛЖНО быть строкой, указывающей формат данных в соответствии с его обозначением типа MIME. Наиболее распространенным форматом является JSON, на что указывает установка для свойства dataFormat значения application/json .
        • Объект МАЙ содержит поле dateSort , и если присутствует его значение ДОЛЖЕН быть одной из следующих строк:
          • createdAscending : возврат результатов в порядке от самого раннего значения dateCreated до самого последнего.
          • createdDescending : вернуть результаты в порядке от самого последнего значения dateCreated до самого раннего.
          • PublishedAscending : возвращает результаты в порядке от самого раннего значения datePublished до самого последнего.
          • опубликованоПо убыванию : вернуть результаты в порядке от последнего значения datePublished до самого раннего.

    Получить один объект по его ссылке ID:

     { // Сообщение
      "дескриптор": {
        "метод": "RecordsQuery",
        "фильтр": {
          "recordId": "b6464162-84af-4aab-aff5-f1f8438dfc1e"
        }
      }
    }
     

    Получить объекты данного типа схемы:

     { // Сообщение
      "дескриптор": {
        "метод": "RecordsQuery",
        "фильтр": {
          "схема": "https://schema.org/MusicPlaylist"
        }
      }
    }
     

    Получить все объекты данного типа схемы:

     { // Сообщение
      "дескриптор": {
        "метод": "RecordsQuery",
        "dateSort": "создано по убыванию",
        "фильтр": {
          "формат данных": "изображение/gif"
        }
      }
    }
     
    §
    ЗаписиЗапись

    Сообщения RecordsWrite — это объекты JSON, которые включают общие свойства дескриптора сообщения и следующие дополнительные свойства, которые должны быть составлены следующим образом:

    • Объект сообщения ДОЛЖЕН содержать свойство recordId , а его значение ДОЛЖНО быть recordId логической записи, которой соответствует запись. Если сообщение является начальной записью для новой записи, значение ДОЛЖНО быть установлено в результирующую строку из процесса генерации идентификатора записи .
    • Если объект сообщения прикреплен к протоколу, и его значение ДОЛЖНО будет идентификатором вычисляемого контекста . Если сообщение не прикреплено к протоколу, оно НЕ ДОЛЖНО содержать свойство contextId .
    • Объект сообщения ДОЛЖЕН содержать свойство дескриптора , а его значение ДОЛЖНО быть объектом JSON, составленным следующим образом:
      • Объект ДОЛЖЕН содержать свойство method и его значение ДОЛЖЕН быть строкой RecordsWrite .
      • Объект ДОЛЖЕН включать свойство parentId , если текущей активной записью для записи является RecordsDelete или CollectionWrite , для которых объявлена ​​стратегия фиксации. Объект НЕ ДОЛЖЕН содержать parentId ни при каких других обстоятельствах. Если присутствует, значение свойства parentId ДОЛЖНО — строковый CID версии 1 DAG CBOR, закодированный дескриптором объекта предыдущей записи RecordsWrite или RecordsDelete , которую сообщение намеревается перезаписать.
      • Объект МОЖЕТ содержать свойство протокола , и его значение Должен быть URI, обозначающим протокол, частью которого является объект.
        • Если объект содержит свойство протокола , объект ДОЛЖЕН также содержать свойство protocolVersion , а его значение Должно быть строкой SemVer, обозначающей версию протокола, частью которого является объект.
      • Объект МОЖЕТ содержать свойство схемы , и если присутствует, его значение Должен быть строкой URI, которая указывает схему связанных данных, и ДОЛЖЕН рассматриваться как неизменяемое значение время жизни логической записи.
      • Объект МОЖЕТ содержать свойство commitStrategy , и если оно присутствует, его значение Должен быть строкой из таблицы зарегистрированных стратегий фиксации.
      • Объект МАЙ содержит опубликованное свойство , и если оно присутствует, его значение Должен быть логическим, указывающим состояние публикации записи. Значение true указывает, что запись была опубликована для общедоступных запросов и использования без авторизации. Значение false или отсутствие свойства указывает на то, что запись НЕ ДОЛЖНА обслуживаться в ответ на общедоступные запросы, для которых отсутствует надлежащая авторизация.
      • Объект МОЖЕТ содержать свойство шифрования , и если оно присутствует, его значение Должен быть строкой, соответствующей одному из поддерживаемых форматов шифрования, указывающим формат шифрования, с помощью которого шифруются данные. Отсутствие этого свойства указывает на то, что данные не зашифрованы.
      • Объект должен , содержит свойство DateCreated , а его значение должно , чтобы быть rfc3339] ISO 8601. владельцем DID или другой уполномоченной стороной.
      • Объект МОЖЕТ содержать свойство datePublished , и его значение ДОЛЖНО быть [RFC3339] Отметка времени ISO 8601, которая ДОЛЖНА быть установлена ​​и интерпретирована как время публикации RecordsWrite владельцем DID или другой уполномоченной стороной.
     { // Сообщение
      "данные": "...",
      "recordId": "b65b7r8n7bewv5w6eb7r8n7t78yj7hbevsv567n8r77bv65b7e6vwvd67b6",
      "descriptor": { // Дескриптор сообщения
        "parentId": CID (ПРЕДЫДУЩИЙ_DESCRIPTOR),
        "dataCid": CID(данные),
        "дата создания": 123456789,
        "опубликовано": правда,
        "шифрование": "jwe",
        "метод": "ЗаписьЗаписей",
        "схема": "https://schema. org/SocialMediaPosting",
        "commitStrategy": "json-слияние",
        "формат данных": DATA_FORMAT
      }
    }
     
    §
    RecordsCommit
     { // Сообщение
      "данные": {...},
      "recordId": "b65b7r8n7bewv5w6eb7r8n7t78yj7hbevsv567n8r77bv65b7e6vwvd67b6",
      "descriptor": { // Дескриптор сообщения
        "метод": "RecordsCommit",
        "dataCid": CID(данные),
        "родительский идентификатор": CID (ANCESTOR_CID),
        "дата создания": 123456789,
        "commitStrategy": "json-слияние",
        "формат данных": DATA_FORMAT
      }
    }
     

    Сообщения RecordsCommit — это объекты JSON, которые включают общие свойства дескриптора сообщения и следующие дополнительные свойства, которые должен состоять из следующим образом:

    • Объект сообщения ДОЛЖЕН содержать свойство recordId , а его значение ДОЛЖНО быть recordId логической записи, которой соответствует запись.
    • Если объект сообщения прикреплен к протоколу, и его значение ДОЛЖНО быть идентификатором вычисляемого контекста . Если сообщение не прикреплено к протоколу, оно НЕ ДОЛЖЕН содержать свойство contextId .
    • Объект сообщения ДОЛЖЕН содержать свойство дескриптора , а его значение ДОЛЖНО быть объектом JSON, составленным следующим образом:
      • Объект ДОЛЖЕН содержать свойство метода , а его значение ДОЛЖНО быть строкой RecordsCommit .
      • Объект Должен включает свойство parentId , а его значение ДОЛЖНО быть строковым CID версии 1 объекта DAG CBOR, закодированного дескриптором предыдущего RecordsWrite или Recordstorage7.
      • Объект ДОЛЖЕН содержать свойство commitStrategy , и если присутствует, его значение Должен быть строкой из таблицы зарегистрированных стратегий фиксации.
      • Объект ДОЛЖЕН содержать свойство dateCreated , а его значение ДОЛЖНО быть временной меткой [RFC3339] ISO 8601, которая ДОЛЖНА быть сгенерирована и интерпретирована как время фиксации 905.
    §
    ЗаписиУдалить
     { // Сообщение
      "descriptor": { // Дескриптор сообщения
        "метод": "RecordsDelete",
        "recordId": "b6464162-84af-4aab-aff5-f1f8438dfc1e"
      }
    }
     

    Сообщения RecordsDelete — это объекты JSON, которые включают в себя общие свойства дескриптора сообщения и следующие дополнительные свойства, которые должны быть составлены следующим образом:

    • Объект сообщения ДОЛЖЕН содержать свойство recordId , а его значение ДОЛЖНО быть recordId логической записи, которой соответствует запись.
    • Если объект сообщения прикреплен к протоколу и его значение ДОЛЖЕН быть идентификатором вычисляемого контекста . Если сообщение не прикреплено к протоколу, оно НЕ ДОЛЖНО содержать свойство contextId .
    • Объект сообщения ДОЛЖЕН содержать свойство дескриптора , а его значение ДОЛЖНО быть объектом JSON, составленным следующим образом:
      • Объект ДОЛЖЕН содержать свойство method и его значение ДОЛЖЕН быть строкой RecordsDelete .
    § Идентификаторы вычисляемого контекста

    TODO

    Подробно о том, как вычисляются идентификаторы для контекстов записей.

    § Сохраненная обработка сообщений

    Сохраненные сообщения в интерфейсе «Записи» — это сообщения, которые могут быть сохранены в отношении конкретной записи, с которой они связаны. В интерфейсе Records RecordsWrite , RecordsCommit , RecordsDelete 9Сообщения 0720 относятся к набору, который может сохраняться для определения истории и текущего состояния данных записи. Соответствующая реализация ДОЛЖНА выполнять следующие шаги для обработки сохраненных сообщений:

    § Если сообщение представляет собой
    RecordsWrite :
    1. Сгенерируйте идентификатор записи сообщения , выполнив процесс создания идентификатора записи .
      • IF сгенерированный идентификатор записи соответствует значению recordId сообщения, это Initial Entry для записи, сохраните запись как Initial Entry для записи, если Initial Entry не существует, и прекратите дальнейшую обработку.
      • ELSE сообщение может быть перезаписываемой записью для записи; продолжить обработку.
    2. Если сообщение не является начальной записью , его дескриптор ДОЛЖЕН содержат parentId для определения позиции записи в происхождении записи. Если присутствует parentId , продолжите обработку, в противном случае удалите запись и прекратите обработку.
    3. Убедитесь, что все неизменяемые значения из исходной записи остались неизменными, если они присутствуют во входящем сообщении. Если какие-либо из них были изменены, отбросьте сообщение и прекратите обработку.
    4. Получить последнюю запись контрольной точки , которая будет либо Исходная запись или последняя RecordsDelete и сравните значение parentId входящего сообщения с Идентификатором записи записи Последней контрольной точки , полученной в результате выполнения Процесса создания идентификатора записи . Если значения совпадают, продолжить обработку, если значения не совпадают, отбросить сообщение и прекратить обработку.
    5. Если существующая запись RecordsWrite связана с записью последней контрольной точки отсутствует и значение dateCreated входящего сообщения больше, чем Последняя запись контрольной точки , сохраните сообщение как Последняя запись и прекратите обработку, в противном случае отбросьте входящее сообщение и прекратите обработку.
    6. Если существующая запись RecordsWrite , связанная с записью Latest Checkpoint , является , присутствуют все следующие условия должны быть правдой:
      • Значение dateCreated входящего сообщения больше, чем существующее значение RecordsWrite , или, если значения dateCreated совпадают, идентификатор Entry ID входящего сообщения больше, чем существующая запись, когда Entry ID из двух сравниваются лексикографически.
    7. Если все следующие условия для шага 6 верны, сохраните входящее сообщение как Последняя запись и отбросить существующую запись RecordsWrite , которая была прикреплена к последней записи контрольной точки .
    § Если сообщение является
    RecordsCommit :
    1. Получить текущую активную запись RecordsWrite для recordId , указанного во входящем сообщении RecordsCommit . Если в настоящее время нет активной записи RecordsWrite , отклоните входящее сообщение и прекратите обработку.
    2. Убедитесь, что все неизменяемые значения из начальной записи остались неизменными, если они присутствуют во входящем сообщении. Если какие-либо из них были изменены, отбросьте сообщение и прекратите обработку.
    3. Если текущий активный RecordsWrite не имеет значения commitStrategy или значение не соответствует значению commitStrategy , указанному во входящем сообщении, сообщение отбрасывается и обработка прекращается.
    4. parentId сообщения ДОЛЖЕН соответствовать текущему активному RecordsWrite идентификатору записи сообщения или другому RecordsCommit , который происходит от него. Если parentId не соответствует ни одному из сообщений в дереве фиксации, отбрасывайте входящее сообщение и прекращайте обработку.
    5. Запись входящего сообщения Значение dateCreated меньше значения dateCreated сообщения в дереве фиксации его parentId , удалите сообщение и прекратите обработку.
    6. Если все вышеперечисленные шаги выполнены успешно, сохранить сообщение относительно записи.
    § Если сообщение представляет собой
    RecordsDelete :
    1. Убедитесь, что запись, указанная идентификатором записи входящего сообщения , существует. Если это не так, отбросьте сообщение и прекратите обработку.
    2. Убедитесь, что все неизменяемые значения из исходной записи остались неизменными, если они присутствуют во входящем сообщении. Если какие-либо из них были изменены, отбросьте сообщение и прекратите обработку.
    3. Получить активную запись RecordsDelete , которая существует для записи. Если такой записи нет, перейдите к следующему шагу. Если активная запись RecordsDelete для записи присутствует, значение dateCreated входящего сообщения ДОЛЖНО быть больше, чем активная запись RecordsDelete ; если это не так, отбросьте сообщение и прекратите обработку.
    4. Сохранить сообщение как Последняя запись контрольной точки , удалить все сообщения обратно в Initial Entry , включая их данные, и прекратить обработку.

    § Протоколы

    Узлы DWeb

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

    §
    Протоколы Конфигурация

    Сообщения ProtocolsConfigure представляют собой объекты JSON, которые включают в себя общие свойства дескриптора сообщения и следующие дополнительные свойства, которые должны быть составлены следующим образом:

     {
      "method": "ProtocolsConfigure", // требуется
      "протокол": "identity.foundation/protocols/credential-issuance", // требуется
      "protocolVersion": "1.0.0", // обязательно
      "определение": { PROTOCOL_DEFINITION_OBJ}, // необязательный
      "lastConfiguration": CID_OF_PREVIOUS_CONFIG, // требуется, если существует предыдущая
      "retainedRecords": CHAMP_OF_INCLUDED_ENTRIES // необязательный
    }
     
    • Объект сообщения ДОЛЖЕН содержать свойство recordId , а его значение ДОЛЖНО быть recordId логической записи, которой соответствует запись.
    • Объект сообщения ДОЛЖЕН содержать свойство дескриптора , а его значение ДОЛЖНО быть объектом JSON, составленным следующим образом:
      • Объект ДОЛЖЕН содержать метод , а его значение ДОЛЖНО быть строкой ProtocolsConfigure .
      • Объект ДОЛЖЕН содержать свойство протокола , а его значение Должен быть URI, обозначающим протокол, к которому относится конфигурация.
      • Объект ДОЛЖЕН содержать свойство protocolVersion , а его значение Должно быть строкой SemVer, обозначающей версию протокола, к которой относится конфигурация.
      • Объект МОЖЕТ содержать свойство description , а его значение Должно быть строкой, описывающей, для чего предназначен протокол.
      • Объект ДОЛЖЕН содержать определение свойства, а его значение Должно быть объектом определения протокола.
      • Объект Должен включать свойство lastConfiguration и его значение ДОЛЖЕН быть строковым идентификатором CID версии 1 DAG CBOR, закодированным сгенерированным идентификатором записи предыдущего ProtocolsConfigure , который соответствует протоколу и протоколу версии .
      • Объект ДОЛЖЕН содержать свойство reintedRecords , и, если присутствует, его значение Должен быть CHAMP, закодированным как строка.
    § Определения протоколов
    9Объекты определения протокола 0002 — это декларативные правила в сообщениях ProtocolConfigure , которые определяют типы, отношения и взаимодействия, разрешенные для данного протокола, установленного на узле DWeb. Входящие абоненты, желающие взаимодействовать с протоколом, должны придерживаться этих правил, соблюдение которых обеспечивается узлами DWeb.

     {
      "метод": "Конфигурация протоколов",
      "протокол": "https://decentralized-social-example.org/protocol/",
      "версия протокола": "1.0.0",
      "описание": "...",
      "определение": {
        "метки": {
          "почта": {
            "схема": "https://decentralized-social-example.org/schemas/post",
            "формат данных": ["приложение/json"],
            "цель": "Позволяет вам публиковать сообщения в социальных сетях, которые могут прочитать другие"
          },
          "отвечать": {
            "схема": "https://decentralized-social-example.org/schemas/reply",
            "формат данных": ["приложение/json"],
            "цель": "Позволяет другим отвечать на ваши сообщения в социальных сетях"
          },
          "изображение": {
            "dataFormat": ["изображение/jpeg", "изображение/png", "изображение/gif"],
            "цель": "Прикреплять изображения к сообщениям и ответам"
          }
        },
        "записи": {
          "почта": {
            "записи": {
              "изображение": {},
              "отвечать": {
                "рекурсивный": правда,
                "записи": {
                  "изображение": {
                    "позволять": {
                      "автор": {
                        "из": "post. reply",
                        "к": {
                          "создавать": {
                            "публикация": "обязательно"
                          }
                        }
                      }
                    }
                  }
                },
                "позволять": {
                  "любой": {
                    "к": {
                      "создавать": {
                        "публикация": "обязательно"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
     
    • Объект Определение протоколов ДОЛЖЕН содержать свойство labels , а его значение ДОЛЖНО быть объектом, состоящим из следующего:

      • Объект ДОЛЖЕН содержать свойство dataFormat , а его значение ДОЛЖНО быть массивом строк, указывающих формат данных в соответствии с его обозначением типа MIME. Наиболее распространенным форматом является JSON, на что указывает установка значения параметра 9.0719 свойство dataFormat в application/json .
      • Объект МОЖЕТ содержать свойство схемы , и если оно присутствует, его значение ДОЛЖНО быть допустимой строкой URI, которая идентифицирует протокол, к которому относится определение.
      • Объект МОЖЕТ содержать свойство предназначение , и если оно присутствует, его значение ДОЛЖНО быть строкой, обеспечивающей описание того, как данные используются в протоколе. Эта информация часто используется приложениями агента пользователя для отображения в пользовательском интерфейсе согласия.
    • Объект Определения протоколов ДОЛЖЕН содержать свойство Records , а его значение ДОЛЖНО быть объектом Record Rules , ключи которого соответствуют меткам, определенным в 9023 объектах Protocol20 Definitions9093. Этот объект является рекурсивным, что позволяет определять внутри последующие отношения записей. Помеченные члены объекта состоят из следующих элементов:

      • Объект может содержать свойство allow , а его значение ДОЛЖНО быть объектом, который определяет правила доступа, взаимодействия и отношения данных. Объект составлен следующим образом:
        • Объект МАЙ содержит свойство author , и если оно присутствует, его значение должно быть Объектом Актер , составленным следующим образом:
          • Объект МАЙ содержит свойства , и если оно присутствует, его значение должно быть ссылкой на путь с разделителями-точками к другой записи в дереве правил записи . Соответствующий разработчик ДОЛЖЕН рассматривать отсутствие этого свойства как ссылку на автора помеченного объекта-члена Правила записи , в котором оно содержится.
          • Объект ДОЛЖЕН содержать свойство от до , и если присутствует его значение должен быть объектом Разрешенная активность , состоящим из следующего:
            • Объект МОЖЕТ содержать свойство create , и если оно присутствует, его значение ДОЛЖНО быть объектом, составленным следующим образом:
              • Объект МАЙ содержит свойство публикации , и если оно присутствует, его значение ДОЛЖНО быть логическим.
              • Объект 9 МАЯ0522 содержат свойство шифрования , и если оно присутствует, его значение ДОЛЖНО быть одним из следующих строковых значений:
                • необязательный - объект МОЖЕТ быть зашифрован с использованием ключа, предоставленного владельцем децентрализованного веб-узла в формате [RFC7516] JSON Web Encryption (JWE).
                • требуется — объект ДОЛЖЕН быть зашифрован с использованием ключа, предоставленного владельцем децентрализованного веб-узла в формате [RFC7516] JSON Web Encryption (JWE).
            • Объект МОЖЕТ содержать свойство update , и если оно присутствует, его значение ДОЛЖНО быть объектом, составленным следующим образом:
            • Объект МОЖЕТ содержать свойство удалить , и если оно присутствует, его значение ДОЛЖНО быть объектом, составленным следующим образом:
        • Объект МОЖЕТ содержать свойство получателя , и если оно присутствует, его значение должно быть Объектом Актера , составленным следующим образом:
          • Объект МОЖЕТ содержать свойство из , и если оно присутствует, его значение должно быть путем, разделенным точкой, ссылкой на другую запись в дереве правил записи . Соответствующий исполнитель ДОЛЖЕН рассматривают отсутствие этого свойства как ссылку на получателя помеченного объекта-члена правила записи , в котором оно содержится.

    TODO

    ДОБАВИТЬ ПРОТОКОЛ ОПРЕДЕЛЕНИЕ ТЕКСТ

    § Инструкции по обработке

    При обработке сообщения ProtocolsConfigure соответствующая реализация ДОЛЖНА выполнить следующие шаги:

    1. Если сообщение имеет свойство lastConfiguration , убедитесь, что указанное значение CID ссылается на допустимую предыдущую конфигурацию для указанного протокола + версии;
    2. Если сообщение: 2а. Не содержит свойство protocolDefinition , обработайте конфигурацию так, как если бы протокол + версия были закрыты для взаимодействия. 2б. Содержит свойство protocolDefinition , выполняет любые процессы индексации, настройки или оптимизации, необходимые для его применения в реализации.
    3. Сохраните конфигурацию.
    §
    Запрос протоколов

    Метод интерфейса ProtocolsQuery позволяет внешнему объекту запрашивать любые активные протоколы, для которых у владельца есть активная конфигурация.

     {
    "метод": "Протоколзапрос",
      "фильтр": {
        "протокол": "identity.foundation/protocols/credential-issuance",
        "версии": ["1.0.0", "2.0.0"]
      }
    }
     

    § Разрешения

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

    §
    Запрос разрешений

    Сообщения PermissionsRequest представляют собой объекты JSON, которые включают в себя общие свойства дескриптора сообщения и следующие дополнительные свойства, которые должны быть составлены следующим образом:

    • Объект сообщения ДОЛЖЕН содержать свойство дескриптора , а его значение ДОЛЖНО быть объектом JSON, составленным следующим образом:
      • Объект ДОЛЖЕН содержать свойство метода , а его значение ДОЛЖНО быть строкой PermissionsRequest .
      • Объект ДОЛЖЕН содержать свойство grantBy , а его значение ДОЛЖНО быть строкой URI DID стороны, предоставляющей разрешение.
      • Объект ДОЛЖЕН содержать свойство grantTo и его значение ДОЛЖЕН быть строкой DID URI стороны, которой предоставляется разрешение.
      • Объект МОЖЕТ содержать описание свойство, а его значение ДОЛЖНО быть строкой, которую запрашивающая сторона использует для сообщения того, для чего используется разрешение.
      • Объект ДОЛЖЕН содержать свойство Scope , а его значение Должно быть объектом следующих свойств:
        • Объект ДОЛЖЕН содержать свойство method , а его значение ДОЛЖНО быть методом интерфейса, который запрашивающая сторона хочет вызвать.
        • Объект МОЖЕТ содержать свойство схемы , и его значение Должна быть строкой URI, указывающей схему связанных данных.
        • Объект МАЙ содержит протокол , а его значение Должен быть URI, обозначающим протокол, частью которого является объект.
        • Объект МОЖЕТ содержать свойство protocolVersion , а его значение Должно быть строкой SemVer, обозначающей версию протокола, частью которого является объект.
        • Объект МАЙ содержит свойство recordId и его значение Должен — детерминированный идентификатор для записи логического крючка.
        • Объект МОЖЕТ содержать свойство contextId , и его значение Должно быть детерминированным идентификатором для контекстно связанного набора объектов.
      • Объект МАЙ содержит свойство условия , и его значение должно быть объектом следующих свойств:
        • Объект МОЖЕТ содержать свойство аттестации , и если оно присутствует, его значение Должна быть строкой , представляющей условия подписания, подробно описанные ниже. Если свойство отсутствует, оно ДОЛЖНО оцениваться так, как если бы оно было установлено в значение , необязательный .
          • запрещено - объект НЕ ДОЛЖЕН быть подписан.
          • опционально - объект МОЖЕТ быть подписан с использованием ключа, связанного с DID владельца децентрализованного веб-узла или авторской стороны (в зависимости от того, что имеет отношение к варианту использования на уровне приложения).
          • требуется — объект ДОЛЖЕН быть подписан с использованием ключа, связанного с DID владельца децентрализованного веб-узла или авторской стороны (в зависимости от того, что относится к варианту использования на уровне приложения).
        • Объект МАЙ содержит шифрование и, если присутствует, его значение Должно быть строкой , представляющей условия шифрования, подробно описанные ниже. Если свойство отсутствует, оно ДОЛЖНО оцениваться так, как если бы оно было установлено в значение , необязательный .
          • необязательный - объект МОЖЕТ быть зашифрован с использованием ключа, предоставленного владельцем децентрализованного веб-узла в формате [RFC7516] JSON Web Encryption (JWE).
          • требуется — объект ДОЛЖЕН быть зашифрован с использованием ключа, предоставленного владельцем децентрализованного веб-узла в формате [RFC7516] JSON Web Encryption (JWE).
        • Объект МОЖЕТ содержать свойство делегирования , и его значение Должно быть логическим значением, где true указывает, что выдающая сторона разрешает получателю права делегировать возможность. Значение false или пропуск свойства ДОЛЖЕН оцениваться как ложный и указывает, что получателю НЕ ДОЛЖЕН быть разрешено делегировать полномочия.
        • Объект МОЖЕТ содержать свойство публикации , и его значение Должно быть логическим значением, где true указывает, что выдающая сторона разрешает получателю гранта публиковать данные, привязанные к методам, которые поддерживают общественное логическое значение в своих наборах полей дескриптора. Соответствующие реализации ДОЛЖНЫ выдать ошибку и не предоставить разрешение, если это свойство присутствует, а метод не поддерживает публикацию.
        • Объект МОЖЕТ содержать свойство sharedAccess , и его значение Должно быть логическим значением , где true указывает на запрос сторона хочет иметь возможность использовать разрешение в отношении любого объекта или данных, которые соответствуют определению возможности, независимо от того, сущность создала объект или данные. Значение ложно или пропуск свойства ДОЛЖЕН оцениваться как ложно и указывает на запрашивающей стороне нужна только возможность вызывать разрешение для объектов или данных, которые она создает.
    • Объект сообщения ДОЛЖЕН содержать свойство авторизации , которое ДОЛЖНО быть объектом JSON, как определено авторизацией сообщения раздел этой спецификации с требованием, чтобы ребенок и подпись ДОЛЖЕН совпадать с DID запрашивающей стороны.
     {
      "дескриптор": {
        "метод": "Запрос разрешений",
        "permissionRequestId": "b6464162-84af-4aab-aff5-f1f8438dfc1e",
        "grantedBy": "делал: пример: Алиса",
        "grantedTo": "делал: пример: боб",
        "description": "Помочь вам создавать и редактировать свои музыкальные плейлисты",
        "объем": {
          "метод": "ЗаписьЗаписей",
          "схема": "https://schema.org/MusicPlaylist"
        },
        "условия": {
          "делегация": правда,
          "публикация": правда,
          "общий доступ": правда,
          "шифрование": "необязательно",
          "аттестация": "запрещено"
        }
      },
      "авторизация": {
        "полезная нагрузка": "89f5hw458fhw958fq094j9jdq0943j58jfq09j49j40f5qj30jf",
        "подписи": [{
          "защищено": "4d093qj5h4f9j204fq8h5398hf9j24f5q9h83402048h553q",
          "подпись": "49jq984h97qh4a49j98cq5h48j09jq9853h509jjq09h5q9j4"
        }]
      }
    }
     
    §
    Предоставление разрешений

    Сообщения PermissionsGrant — это объекты JSON, содержащие возможности, предоставленные сторонам, которые ограничивают объем разрешенных действий, которые может выполнять инициатор. Они генерируются либо в ответ на Сообщение PermissionsRequest или оптимистично агентом пользователя без инициации PermissionsRequest . Сообщения PermissionsGrant включают общие свойства дескриптора сообщения и следующие дополнительные свойства:

    • Объект сообщения ДОЛЖЕН содержать свойство дескриптора , а его значение ДОЛЖНО быть объектом JSON, составленным следующим образом:
      • Объект ДОЛЖЕН содержат свойство метода , и его значение ДОЛЖНО быть строкой PermissionsGrant .
      • Объект ДОЛЖЕН содержать свойство permissionGrantId , а его значение ДОЛЖНО быть строкой UUID версии 4 [RFC4122], представляющей объект ответа.
      • Если предоставленное разрешение является ответом на PermissionRequest , объект ДОЛЖЕН содержат свойство permissionRequestId , а его значение ДОЛЖНО быть строкой UUID версии 4 [RFC4122] объекта PermissionRequest , в отношении которого предоставляется разрешение.
      • Объект ДОЛЖЕН содержать свойство grantBy , а его значение ДОЛЖНО быть строкой URI DID стороны, предоставляющей разрешение.
      • Объект ДОЛЖЕН содержат свойство grantTo , а его значение ДОЛЖНО быть строкой URI DID стороны, которой предоставляется разрешение.
      • Если Permissiongrant является делегированным разрешением, объект должен содержит свойства , а его значение Должен - это значение 40521 - это значение - это значение . РазрешенияГрант 907:20 он был делегирован.
      • Объект ДОЛЖЕН содержать свойство срока действия , а его значение ДОЛЖНО быть отметкой времени эпохи Unix, которую можно использовать для запуска действий по отзыву.
      • Объект ДОЛЖЕН содержать свойство Scope , а его значение Должно быть объектом следующих свойств:
        • Объект ДОЛЖЕН содержать method , а его значение ДОЛЖНО быть методом интерфейса, который запрашивающая сторона хочет вызвать.
        • Объект МОЖЕТ содержать свойство схемы , и его значение Должна быть строкой URI, указывающей схему связанных данных.
        • Объект МОЖЕТ содержать свойство протокола , и его значение Должен быть URI, обозначающим протокол, частью которого является объект.
        • Объект МОЖЕТ содержать свойство protocolVersion , а его значение Должно быть строкой SemVer, обозначающей версию протокола, частью которого является объект.
        • Объект МОЖЕТ содержать свойство recordId , и его значение Должна быть 4-строчной ссылкой UUID на объект.
        • Объект МАЙ содержит contextId и его значение Должен быть детерминированным идентификатором для контекстно-связанного набора объектов.
      • Объект МАЙ содержит свойство условия , и его значение должно быть объектом следующих свойств:
        • Объект МАЙ содержит свойство аттестации и, если присутствует, его значение Должен — строка , представляющая условия подписи, подробно описанные ниже. Если свойство отсутствует, оно ДОЛЖНО оцениваться так, как если бы оно было установлено в значение , необязательный .
          • запрещено - объект НЕ ДОЛЖЕН быть подписан.
          • необязательный — объект МОЖЕТ быть подписан с использованием ключа, связанного с DID владельца децентрализованного веб-узла или авторской стороны (в зависимости от того, что относится к варианту использования на уровне приложения).
          • требуется — объект ДОЛЖЕН быть подписан с использованием ключа, связанного с DID владельца децентрализованного веб-узла или авторской стороны (в зависимости от того, что относится к варианту использования на уровне приложения).
        • Объект МОЖЕТ содержать свойство шифрования , и если оно присутствует, его значение Должен быть строкой , представляющей условия шифрования, подробно описанные ниже. Если свойство отсутствует ДОЛЖЕН оцениваться так, как если бы ему было присвоено значение необязательный .
          • необязательный - объект МОЖЕТ быть зашифрован с использованием ключа, предоставленного владельцем децентрализованного веб-узла в формате [RFC7516] JSON Web Encryption (JWE).
          • требуется — объект ДОЛЖЕН быть зашифрован с использованием ключа, предоставленного владельцем децентрализованного веб-узла в формате [RFC7516] JSON Web Encryption (JWE).
        • Объект МОЖЕТ содержать свойство делегирования , и его значение Должно быть логическим значением, где true указывает, что выдающая сторона разрешает получателю права делегировать возможность. Значение false или отсутствие свойства ДОЛЖНО оцениваться как ложное и указывает, что получателю НЕ ДОЛЖНО разрешено делегировать возможность.
        • Объект МОЖЕТ содержать свойство публикации , и его значение Должно быть логическим значением, где true указывает, что выдающая сторона разрешает получателю гранта публиковать данные, привязанные к методам, которые поддерживают общедоступное логическое значение в своих наборах полей дескриптора. Соответствующие реализации ДОЛЖНЫ выдавать ошибку и не могут предоставить разрешение, если это свойство присутствует и метод не поддерживает публикацию.
        • Объект МОЖЕТ содержать свойство sharedAccess , и его значение Должно быть логическим значением , где true указывает на запрос сторона хочет иметь возможность использовать разрешение в отношении любого объекта или данных, которые соответствуют определению возможности, независимо от того, сущность создала объект или данные. Значение false или пропуск свойства ДОЛЖЕН оцениваться как ложный и указывает запрашивающей стороне нужна только возможность вызывать разрешение для объектов или данных, которые она создает.
    • Объект сообщения ДОЛЖЕН содержать свойство авторизации , которое ДОЛЖНО быть объектом JSON, как определено авторизацией сообщения раздел этой спецификации с требованием, чтобы kid и подпись ДОЛЖНА совпадать с DID запрашивающей стороны.
    • Сообщение ДОЛЖНО содержать полезную нагрузку данных , которая представляет собой представление предоставленного разрешения в виде веб-токена JSON, как определено в разделе «Объекты возможностей» ниже.
    • Сообщение ДОЛЖНО содержать свойство EncryptionKey , если данные, переданные с использованием предоставленного разрешения, должны быть зашифрованы в соответствии с директивами для шифрования в соответствии с шифрование поле условий разрешения. Если присутствует, значение свойства EncryptionKey ДОЛЖНО быть объектом [RFC7516] JSON Web Encryption (JWE), который содержит зашифрованный ключевой материал, необходимый авторизованной стороне для дешифрования JWE, представленного значением dataCid . внутри объекта дескриптора .
     {
      "дескриптор": {
        "метод": "Предоставление разрешений",
        "permissionGrantId": "f45wve-5b56v5w-5657b4e-56gqf35v",
        "permissionRequestId": "b6464162-84af-4aab-aff5-f1f8438dfc1e",
        "grantedBy": "делал: пример: боб",
        "grantedTo": "делал: пример: Кэрол",
        "срок действия": 1575606941,
        "delegatedFrom": PARENT_PERMISSION_GRANT,
        "объем": {
          "метод": "ЗаписьЗаписей",
          "схема": "https://schema.org/MusicPlaylist",
          "recordId": "f45wve-5b56v5w-5657b4e-56gqf35v"
        },
        "условия": {
          "делегация": правда,
          "публикация": правда,
          "общий доступ": правда,
          "шифрование": "необязательно",
          "аттестация": "запрещено"
        }
      },
      "авторизация": {
        "полезная нагрузка": "89f5hw458fhw958fq094j9jdq0943j58jfq09j49j40f5qj30jf",
        "подписи": [{
          "защищено": "4d093qj5h4f9j204fq8h5398hf9j24f5q9h83402048h553q",
          "подпись": "49jq984h97qh4a49j98cq5h48j09jq9853h509jjq09h5q9j4"
        }]
      },
      "ключ шифрования": {
        "защищено": . ..,
        "получатели": ...,
        "зашифрованный текст": ...,
        «ив»: ...,
        "ярлык": ...
      }
    }
     
    § Предоставленные ключи шифрования

    Атрибут EncryptionKey разрешения PermissionsGrant представляет собой объект [RFC7516] JSON Web Encryption (JWE), который состоит из следующих элементов:

    1. Малыш 9Поле 0720 заголовка JWE ДОЛЖНО быть URL-адресом DID, который идентифицирует тип открытого ключа, предназначенный для шифрования в документе DID получателя PermissionGrant .
    2. Зашифрованное поле ДОЛЖНО быть зашифровано открытым ключом X25519 , предназначенным для шифрования в документе DID получателя PermissionGrant .
    3. Данные, зашифрованные в зашифрованном тексте объекта 9Поле 0720 ДОЛЖНО быть представлением объекта JSON Web Key (JWK) симметричного ключа шифрования AES-256 , сгенерированного владельцем DWeb-узла, который будет использоваться для шифрования передаваемых данных по отношению к связанному Разрешение .
    § Праводатель
    Предоставление разрешений Хранение

    После создания PermissionsGrant пользовательский агент (например, приложение кошелька с доступом к авторитетным ключам для данного DID) ДОЛЖЕН зафиксировать предоставленный объект разрешения на децентрализованном веб-узле DID, из которого было выдано разрешение. Это гарантирует наличие разрешения при последующих вызовах методов интерфейса.

    § Получатель прав
    Предоставление разрешений Доставка

    После того, как пользовательский агент (например, приложение кошелька с доступом к авторитетным ключам для данного DID) генерирует PermissionsGrant для объекта, чтобы разрешить доступ к данным и функциям, ответственность за это возлагается на пользовательский агент, сгенерировавший 0719 PermissionsGrant для доставки объекту, являющемуся субъектом. Для этого пользовательский агент ДОЛЖЕН сгенерировать запрос, который включает PermissionsGrant , и отправить его на децентрализованный веб-узел субъекта, которому он был предоставлен, в соответствии с разделами «Разрешение» и «Создание запроса» этой спецификации. .

    §
    Отзыв разрешений

    Отзыв разрешения — это действие по закрытию любых дополнительных или недействительных вызовов этого разрешения. Метод интерфейса Revoke позволяет отозвать разрешение посредством прямой ссылки на идентификатор разрешения.

     { // Сообщение
      "descriptor": { // Дескриптор сообщения
        "метод": "Отозвать разрешения",
        "permissionRevokeId": "sdfa4162-84af-4aab-aff5-f1f8438dfc1e",
        "permissionGrantId": "b6464162-84af-4aab-aff5-f1f8438dfc1e"
      }
    }
     
    §
    Запрос разрешений

    Метод PermissionQuery существует для облегчения поиска любых сохраненных объектов разрешений, которые существуют в данном экземпляре DWeb-узла DID.

     { // Сообщение
      "descriptor": { // Дескриптор сообщения
        "метод": "Запрос разрешений",
        "grantedTo": "делал: пример: боб"
      }
    }
     
    • Объект сообщения ДОЛЖЕН содержать свойство дескриптора , а его значение ДОЛЖНО быть объектом JSON, составленным следующим образом:
      • Объект ДОЛЖЕН содержать свойство method , а его значение ДОЛЖНО быть строкой PermissionsQuery .
      • Объект МАЙ содержит любое из следующих свойств из дескрипторов PermissionsRequest , PermissionsGrant и PermissionsRevoke объектов:
        • разрешениеRequestId
        • разрешениеGrantId
        • разрешениеRevokeId
        • предоставлено
        • выданоTo
        • делегированоОт
        • все свойства области объектов

    § Крючки

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

    DWeb Node Hooks предназначены не только для того, чтобы разрешить подписчикам с правами доступа получать уведомления о новых данных, но и, при желании, ответить на запрос объекта, который запускает их вызов. Это позволяет подписанному объекту обрабатывать данные и отправлять ответы объекту, который может ожидать результатов.

    §
    HooksWrite

    Сообщения HooksWrite — это объекты JSON, которые включают общие свойства дескриптора сообщения и следующие дополнительные свойства, которые должен состоять из следующим образом:

    • Объект сообщения ДОЛЖЕН содержать свойство recordId , а его значение ДОЛЖНО быть recordId логической записи, которой соответствует запись. Если сообщение является начальной записью для нового устанавливаемого хука, значение ДОЛЖНО быть установлено в результирующую строку из процесса генерации идентификатора записи .
    • Объект сообщения ДОЛЖЕН содержать свойство дескриптора , а его значение ДОЛЖНО быть объектом JSON, составленным следующим образом:
      • Объект ДОЛЖЕН содержать свойство method , а его значение ДОЛЖНО быть строкой HooksWrite .
      • Объект МОЖЕТ содержать свойство parentId , и его значение ДОЛЖНО быть CID версии 1 для предыдущих Крючки Напишите в цепочке.
      • Объект ДОЛЖЕН содержать свойство uri , а его значение ДОЛЖНО быть строкой URI.
      • Объект МОЖЕТ содержать свойство filter , и если оно присутствует, его значение ДОЛЖНО быть объектом, который МОЖЕТ содержать следующие свойства:
        • Объект МАЙ содержит recordId Свойство, которое ссылается на логическую запись.
        • Объект МОЖЕТ содержать contextId , и если присутствует, его значение ДОЛЖНО быть детерминированным идентификатором для контекстно связанного набора объектов.
        • Объект МОЖЕТ содержать свойство схемы , и если присутствует, его значение Должен быть строкой URI, указывающей схему связанных данных.
        • Объект МОЖЕТ содержать свойство протокола , и его значение Должен быть URI, обозначающим протокол, частью которого является объект.
          • Если объект содержит свойство протокола , объект ДОЛЖЕН также содержать свойство protocolVersion , а его значение Должен быть строкой SemVer, обозначающей версию протокола, частью которого является объект из.
        • Объект МОЖЕТ содержать свойство dataFormat , а его значение ДОЛЖНО быть строкой, указывающей формат данных в соответствии с его обозначением типа MIME. Наиболее распространенным форматом является JSON, на что указывает установка для свойства dataFormat значения application/json .

    Добавление хука для публикаций в социальных сетях:

     { // Сообщение
      "дескриптор": {
        "метод": "HooksWrite",
        "hookId": "234452-563658-5563-63546",
        "uri": "https://some-domain.com/dwn-hook",
        "фильтр": {
          "протокол": "https://example.com/protocols/social-media",
          "схема": "https://schema.org/SocialMediaPosting"
        }
      }
    }
     

    Обновление ранее добавленного хука:

     { // Сообщение
      "дескриптор": {
        "parentId": CID_OF_PREVIOUS_INSTANCE,
        "метод": "HooksWrite",
        "hookId": "234452-563658-5563-63546",
        "uri": "https://a-разный-домен. com/новый/путь",
        "фильтр": {
          "протокол": "https://example.com/protocols/social-media",
          "схема": "https://schema.org/SocialMediaPosting"
        }
      }
    }
     
    §
    HooksWrite Инструкции по загрузке

    Если свойство parentId :

    • НЕТ , проиндексируйте CID ловушки для будущей оценки и прекратите обработку.
    • IS удалите ловушку, на которую ссылается parentId , и проиндексируйте CID новой версии ловушки для будущей оценки и прекратите обработку.
    §
    HooksQuery

    Сообщения HooksQuery представляют собой объекты JSON, которые включают в себя общие свойства дескриптора сообщения и следующие дополнительные свойства, которые должны быть составлены следующим образом:

    • Объект сообщения ДОЛЖЕН содержать свойство дескриптора , а его значение ДОЛЖНО быть объектом JSON, составленным следующим образом:
      • Объект ДОЛЖЕН содержать метод , а его значение ДОЛЖНО быть строкой HooksQuery .
      • Объект МОЖЕТ содержать свойство filter , и если оно присутствует, его значение ДОЛЖНО быть объектом, который МОЖЕТ содержать хотя бы одно из следующих свойств:
        • Объект МОЖЕТ содержать свойство записывающего устройства , и его значение ДОЛЖНО быть строкой DID, из которой были записаны ловушки. Запрос писателем может быть важен в тех случаях, когда писатель хочет просмотреть все хуки, которые он установил для узлов DWeb целевого DID.
        • Объект МОЖЕТ содержать свойство recordId , и его значение ДОЛЖНО быть детерминированным идентификатором для логической записи ловушки. Это будет использоваться для извлечения определенного хука, как это можно сделать, чтобы определить, существует ли он в целевом узле DWeb.
        • Объект МОЖЕТ содержать активное свойство, и его значение ДОЛЖНО быть логическим значением, где true указывает, что должны быть возвращены только активные ловушки (последние HooksWrite , при условии, что нет обработки HooksDelete ), а false указывает, что должны быть возвращены только неактивные записи ловушек (последние HooksDelete ). Пропуск этого свойства означает, что должны быть возвращены все активные и неактивные записи ловушек (последние HooksWrite или HooksDelete для каждого recordId ).

    Получить все активные хуки Алиса написала:

     { // Сообщение
      "дескриптор": {
        "метод": "HooksQuery",
        "фильтр": {
          "писатель": "делал: пример: Алиса",
          "активный": правда
        }
      }
    }
     
    §
    ХукиУдалить

    Сообщения HooksWrite представляют собой объекты JSON, которые включают в себя общие свойства дескриптора сообщения и следующие дополнительные свойства, которые должны быть составлены следующим образом:

    • Объект сообщения ДОЛЖЕН содержать свойство дескриптора , а его значение ДОЛЖНО быть объектом JSON, составленным следующим образом:
      • Объект ДОЛЖЕН содержать свойство method , а его значение ДОЛЖНО быть строкой HooksDelete .
      • Объект ДОЛЖЕН содержать свойство recordId , и его значение ДОЛЖНО — детерминированный идентификатор для записи логического крючка.
      • Объект МОЖЕТ содержать свойство parentId , и его значение ДОЛЖНО быть CID версии 1 дескриптора для предыдущего HooksWrite в цепочке.

    Удаление хука:

     { // Сообщение
      "дескриптор": {
        "метод": "HooksDelete",
        "recordId": "234452-563658-5563-63546",
        "parentId": CID_OF_HOOK_INSTANCE_TO_DELETE
      }
    }
     
    §
    HooksDelete Инструкции по загрузке
    1. Если свойства parentId или recordId НЕ присутствуют, отбросить объект и вернуть ответ об ошибке кодирования состояния на уровне сообщения 400.
    2. Если свойство parentId IS присутствует и сообщение, указанное CID, имеет такое же значение свойства recordId , удалите сообщение ловушки, на которое ссылается parentId и сохраните сообщение HooksDelete в качестве надгробия.

    § Синхронизация

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

    § Стратегии фиксации

    Записи интерфейса

    Records могут работать в рамках описанных ниже алгоритмов модификации данных. Запись может работать только в соответствии с одной стратегией фиксации за раз, как указано через значение, установленное на стратегия свойство текущего RecordsWrite корня.

    Название стратегии Примечания
    Стратегия по умолчанию, добавление свойства commitStrategy не требуется.
    json-патч Исправление документов типа JSON на основе Delta, как определено в [spec:rfc6902]
    json-слияние Простая стратегия модификации глубокого слияния для документов типа JSON, как определено в [spec:rfc7386]

    § Патч JSON

    TODO

    Подробное исправление JSON как вариант стратегии фиксации.

    § Патч слияния JSON

    TODO

    Деталь JSON Merge Patch как вариант стратегии фиксации.

    § Конфигурации

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

    § Публикация открытых данных

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

     {
      "тип": "Обнаружение признаков",
      "интерфейсы": {
        "записи": {
          «Рекордсзапрос»: правда
        }
      }
    }
     

    § Поддерживаемые схемы шифрования

    Соответствующая реализация ДОЛЖНА быть способна шифровать и расшифровывать данные, хранящиеся в децентрализованных веб-узлах, с использованием следующих комбинаций криптографических схем. Каждая схема представляет собой пару, в которой симметричные ключи используются для шифрования защищаемых данных, а затем совместно используются разрешенными получателями путем шифрования симметричных ключей с использованием асимметричного ключа каждого получателя.

    Асимметричный ключ Симметричный ключ
    X25519 AES-GCM
    X25519 XSalsa20-Poly1305

    § Поддерживаемые форматы шифрования

    Соответствующая реализация ДОЛЖНА быть способна шифровать и расшифровывать данные, хранящиеся в децентрализованных веб-узлах, с использованием следующих комбинаций криптографических схем. Каждая схема представляет собой пару, в которой симметричные ключи используются для шифрования защищаемых данных, а затем совместно используются разрешенными получателями путем шифрования симметричных ключей с использованием асимметричного ключа каждого получателя.

    Этикетка Формат
    джве AES-GCM
    X25519 XSalsa20-Poly1305

    § Нормативные ссылки

    RFC3339
    Дата и время в Интернете: метки времени . Г. Клайн; К. Ньюман; 2002-07. Статус: Предлагаемый стандарт.
    RFC4122
    Универсальный уникальный идентификатор (UUID) URN Namespace . П. Лич; М. Меллинг; Р. Зальц; 2005-07. Статус: Предлагаемый стандарт.
    RFC7515
    Веб-подпись JSON (JWS) . М. Джонс; Дж. Брэдли; Н. Сакимура; 2015-05. Статус: Предлагаемый стандарт.
    RFC7516
    Веб-шифрование JSON (JWE) . М. Джонс; Дж. Хильдебранд; 2015-05. Статус: Предлагаемый стандарт.
    RFC7519
    Веб-маркер JSON (JWT) . М. Джонс; Дж. Брэдли; Н. Сакимура; 2015-05. Статус: Предлагаемый стандарт.

    @pact-foundation/pact-node — пакет npm | Snyk

    Все уязвимости безопасности принадлежат производственных зависимостей прямых и косвенных пакеты.

    Риск безопасности и лицензии для основных версий

    Все версии

    Версия Уязвимости Риск лицензии
    7 0.48109 1 | 12/2022
    • C
    • H
    • M
    • L
    • H
    • M
    • L
    10. 17.1 | 12/2021

    Popular

    • C
    • H
    • M
    • L
    • H
    • M
    • L
    10. 16.1 | 12/2021
    • C
    • H
    • M
    • L
    • H
    • M
    • L
    9. 0 .7 | 10/2019
    • C
    • 7

      H
    • 5

      M
    • 5

      M
    • 5

      M
    • 5

      M
    • 0006

    • 2

      L
    • H
    • M
    • L
    • 9
    • L
    • 69
    • L 9000 9000 9000 9000 9000 9000 9000
  • L 9000 9000 9000 9000 9000
  • L 9000 9000 9000
  • 9 .
  • 07/2019
    • C
    • 13

      H
    • 6

      M
    • 2

      L
    • H
    • M
    • L

    Лицензия
    Массачусетский технологический институт

    Политика безопасности
    Нет

    Ваш проект подвержен уязвимостям?

    Сканируйте свои проекты на наличие уязвимостей. Быстро исправить с помощью автоматизированного исправления. Начните работу со Snyk бесплатно.

    Начните бесплатно

    Еженедельные загрузки (95 684)

    Скачать тренд

    Звезды GitHub
    142

    Вилки
    76

    Авторы
    40


    Популярность прямого использования

    Необычный

    Пакет npm @pact-foundation/pact-node получает в общей сложности 95 684 загрузки в неделю. Таким образом, мы забили Уровень популярности @pact-foundation/pact-node должен быть признан.

    На основе статистики проекта из репозитория GitHub для npm package @pact-foundation/pact-node, мы обнаружили, что он был снялся 142 раза.

    Загрузки рассчитываются как скользящие средние за период из последних 12 месяцев, за исключением выходных и известных отсутствующих точек данных.

    Частота фиксации

    Открытые проблемы
    13

    Открытый PR
    4

    Последняя версия
    2 месяца назад

    Последняя фиксация
    1 месяц назад


    Дальнейший анализ состояния обслуживания @pact-foundation/pact-node на основе каденция выпущенных версий npm, активность репозитория, и другие точки данных определили, что его обслуживание Здоровый.

    Мы обнаружили, что @pact-foundation/pact-node демонстрирует положительную частоту выпуска версий. по крайней мере с одной новой версией, выпущенной за последние 3 месяца.

    За последний месяц мы не обнаружили никаких запросов на вытягивание или изменений в статус issue был обнаружен для репозитория GitHub.

    Совместимость с Node.js
    не определен


    Возраст
    7 лет

    Зависимости
    20 прямых

    Версии
    192

    Размер установки
    225 КБ

    Дистанционные теги
    2

    Количество файлов
    97

    Обслуживающий персонал
    7

    Типы TS
    Да


    @pact-foundation/pact-node имеет более одного и последнего тега по умолчанию, опубликованного для пакет нпм. Это означает, что для этого могут быть доступны другие теги. пакет, например рядом, чтобы указать будущие выпуски, или стабильный, чтобы указать стабильные релизы.

    node.js - Medium

    Node.js - Mediumopen в приложении

    Node.js

    117K подписчиков

    Опубликовано в Node.js Collection

    · Август 3, 2022

    Archived: node.je.

    Привет всем. Большое спасибо за ваш интерес к средней коллекции Node.js. Мы решили отказаться от инициативы по курированию контента Node.js. Есть много других мест, где можно получить отличный контент, и мы желаем вам удачи в вашем путешествии по Node.js.

    1 минута чтения

    1 минута чтения

    Привет всем. Большое спасибо за ваш интерес к средней коллекции Node.js.

    Мы решили отказаться от инициативы по курированию контента Node.js. Есть много других мест, где можно получить отличный контент, и мы желаем вам удачи в вашем путешествии по Node.js.

    Опубликовано в Node.js Collection

    · 10 января 2022 г.

    Требуется помощь: путь Node Addon API к полному охвату модульным тестированием

    -Рабочая группа API и соавторы проекта. Всем привет! Рабочей группе Node-API требуется помощь сообщества для достижения полного охвата модульными тестами проекта node-addon-api. Если вы не знакомы с написанием нативных дополнений C++ для…

    Чтение: 2 мин.

    Чтение: 2 мин.

    Этот блог был написан Бетани Григгс при дополнительном участии Технического руководящего комитета Node.js и соавторов проекта. Мы рады сообщить, что Node.js 17 был выпущен сегодня! Node.js 17 заменяет Node.js 16 в качестве нашей «текущей» линейки релизов, а Node.js 16 будет переведен на долгосрочную поддержку (LTS) на следующей неделе…

    Чтение: 6 мин.

    Чтение: 6 мин.

    10 августа 2021 г. Робертс при участии команды Node.js Mentorship Initiative. Спасибо всем, кто следит за Инициативой наставничества. Я ответил на ваши вопросы в OpenJS Slack, но я не делился обновлениями так часто, как хотелось бы, поэтому я пишу этот пост…

    Nodejs

    4 мин чтения

    Nodejs

    4 минуты чтения

    15 июля 2021 г.

    Какие варианты использования существуют для async_hooks?

    Здравствуйте, пользователи Node.js! 👋 Рабочая группа по диагностике ищет отзывы о том, как пользователи Node.js используют API async_hooks, и уточняет, что именно в этой проблеме делает async_hooks полезным для них. Мы надеемся построить абстракции более высокого уровня, более специализированные для нужд наших…

    Nodejs

    2 мин чтения

    Nodejs

    2 минуты чтения

    16 июня 2021 г.

    Представляем Undici@4

    Спустя несколько лет после первого выпуска Undici 3 года назад и множество новых функций мы собрали множество участников. Этот небольшой HTTP-клиент, созданный Маттео в качестве эксперимента, быстро стал чрезвычайно стабильным и производительным, возглавив обновленную работу по внедрению…

    Nodejs

    3 мин.0003

    18 мая 2021 г.

    Завершение программы отчетности об уязвимостях экосистемы Node.js

    Проект Node.js завершит свертывание программы отчетности об уязвимости экосистемы, начиная с 18 мая. Это НЕ влияет на процесс сообщения об уязвимостях в самом проекте Node.js. Они будут по-прежнему обрабатываться через нашу программу HackerOne, и о них можно сообщать как…

    Nodejs

    2 мин чтения

    Nodejs

    Чтение: 2 мин.

    3 мая 2021 г.

    Переименование N-API в Node-API

    Этот пост подготовлен командой Node-API. Цель этой записи в блоге — объяснить, что побудило нас переименовать N-API в Node-API. Проблема, которая отслеживает переход: https://github.com/nodejs/abi-stable-node/issues/420. Возможно, вы заметили, что N-API изменился на Node-API в документации проекта Node.js. N-API…

    Узлы

    2 мин. Читать

    Nodejs

    2 мин. Чтение

    Опубликовано в Collection.js Collection

    · 28 апреля, 2021

    Node.js Mentorship. Инициатива наставничества Node.js. Инициатива наставничества Node.js рада объявить о новом открытии. Мы ищем нового подопечного для нашей инициативы. Поэтому мы приглашаем разработчиков, которые увлечены экосистемой Node.js и готовы учиться и вносить свой вклад в…

    Mentorship

    1 мин. Читать

    Mentorship

    1 мин. Чтение

    Опубликовано в Node.js Collection

    · 20 апреля 2021

    Node. Бетани Григгс, при дополнительном участии Технического руководящего комитета Node.js. Мы рады объявить о выпуске Node.js 16 сегодня! Основные моменты включают обновление движка JavaScript V8 до версии 9.

    0, готовые двоичные файлы Apple Silicon и дополнительные стабильные API. Вы можете скачать…

    Nodejs

    4 мин. Чтение

    Nodejs

    4 мин.

    Node.js

    117K подписчиков

    Node.js является совместным открытым исходным исходным исходным исходным исходным. https://nodejs.org/en/

    после

    • Дэвид Фекке

    • PCMAG

    • Readwrite

    • Saron Yitbarek

    Robin Glen Glen Glen Glen Glen Glen

    Robin Glen

    9000

    Статус

    Писатели

    Карьера

    Конфиденциальность

    Преобразование текста в речь

    Расширенное планирование Kubernetes pod to node

    By Ben Hirschberg 27 июля 2021 г.

    Гостевой пост Бена Хиршберга, вице-президента по исследованиям и разработкам и соучредителя АРМО

    В Kubernetes задача планирования модулей для определенных узлов в кластере обрабатывается kube-scheduler. По умолчанию этот компонент фильтрует узлы на основе запросов ресурсов и ограничений каждого контейнера в созданном модуле. Затем подсчитываются возможные узлы, чтобы найти лучшего кандидата для размещения модуля.

    Во многих сценариях желательно планировать модули на основе ограничений ресурсов. Однако в некоторых случаях администраторы Kubernetes хотят запланировать модули для определенных узлов в соответствии с другими ограничениями. Именно тогда следует рассмотреть расширенное планирование pod.

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

    Варианты использования ручного планирования Pod-to-Node

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

    • Запуск модулей на узлах с выделенным оборудованием: Некоторые приложения Kubernetes могут иметь особые требования к оборудованию. Например, для модулей, выполняющих задания машинного обучения, требуются высокопроизводительные графические процессоры, а не центральные процессоры, в то время как модули Elasticsearch более эффективны на твердотельных накопителях, чем на жестких дисках. Таким образом, наилучшей практикой для любого управления кластером K8s с учетом ресурсов является назначение модулей узлам с правильным оборудованием.
    • Совместное размещение модулей и взаимозависимость: В настройках микрослужб или тесно связанном стеке приложений определенные модули должны быть размещены на одном компьютере, чтобы повысить производительность, избежать проблем с задержкой в ​​сети и сбоев подключения. Например, рекомендуется запускать веб-сервер на том же компьютере, что и службу кэширования в памяти или базу данных.
    • Локальность данных: Требования к локальности данных для приложений, интенсивно использующих данные, аналогичны предыдущему варианту использования. Чтобы обеспечить более быстрое чтение и лучшую пропускную способность записи, этим приложениям может потребоваться развертывание баз данных на том же компьютере, где работает клиентское приложение.
    • Высокая доступность и отказоустойчивость: Чтобы сделать развертывание приложений высокодоступным и отказоустойчивым, рекомендуется запускать модули на узлах, развернутых в отдельных зонах доступности.

    Ресурсы Kubernetes для расширенного планирования подов 

    Kubernetes предоставляет множество ресурсов и стратегий API, которые помогают реализовать эти варианты использования. Ниже я рассмотрю концепции nodeSelector, сходства узлов и сходства между модулями. Я также познакомлю вас с некоторыми примерами и покажу, как реализовать их в вашем кластере K8s.

    Ручное планирование модулей с помощью nodeSelector

    В более ранних версиях K8s пользователи могли вручную планировать поды, используя поле nodeSelector в PodSpec. По сути, nodeSelector — это основанный на метках метод планирования между модулями и узлами, при котором пользователи назначают определенные метки узлам и следят за тем, чтобы поле nodeSelector соответствовало этим меткам.

    Например, предположим, что одной из меток узла является «storage=ssd», чтобы указать тип хранилища на узле.

    Kubectl Опишите узел «HOST01»
    Имя: HOST01
    Роли: Узел
    Метки: Storage = SSD,
    ……

    к расписанию на поставке. с этим ярлыком в манифесте Pod.

    APIVersion: v1
    вид: Pod
    метаданные:
    имя: pod
    ярлыки:
     env: dev
    спецификация:
    контейнеры:
    — name: your-container
    image: your-container image
    imagePullPolicy: IfNotPresent
    nodeSelector:
    storage: ssd

    Селекторы узлов — это простейший метод расширенного планирования pod. Однако они не очень полезны, когда при планировании модулей следует учитывать другие правила и условия.

    Привязка узлов

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

    В приведенном ниже примере мы используем привязку узлов для размещения модулей на узлах в определенных зонах доступности. Давайте посмотрим на манифест ниже:

    Apiversion: V1
    СИЖД: POD
    Metadata:
    Имя: Узел-Аффинность
    СПЕЦИАЛЬНЫЕ:
    Аффинность:
    NODEAFFINITY:
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    . -name
              оператор: В
              значения:
    -CP-1A
    -CP-1B
    PreferredDuringSchedulingIgnedDuringExecution:
    -Вес: 7
    Предпочтение:
    MatchExpressions:
    -КЛЮЧ: Custom-ключ
    Оператор: в
    Значения:
    -Custom-Value
    Запор:
    –me: NAM3-названия:
    :
    -Custom-Value
    . node-affinity
      image: your-container-image

    «Жесткие» правила сходства указаны в поле «требуется во время планирования, игнорируется во время выполнения» в разделе nodeAffinity манифеста модуля. В этом примере я сказал планировщику размещать модуль только на узлах с меткой, имеющей ключ kubernetes.io/cp-az-name и значения cp-1a или cp-1b.

    Для этого я использовал логический оператор In, фильтрующий массив существующих значений меток. Другие операторы, которые я мог бы использовать, включают NotIn, Exists, DoesNotExist, Gt и Lt.

    .

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

    Рекомендуется создавать правила сходства узлов таким образом, чтобы они включали как «жесткие», так и «мягкие» правила. Следование этому подходу «наилучшие усилия» — т. е. использовать какой-либо вариант, если это возможно, но не отказываться от планирования, если этот вариант недоступен, — делает планирование развертывания более гибким и предсказуемым.

    Сходство между блоками

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

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

    Apiversion: V1
    СИНД: POD
    Метаданные:
    Имя: пример-pod-affinity
    Спецификация:
    Аффинность:
    Podaffinity:
    .
              значений:
            – S1
          topologyKey: failure-domain.beta.kubernetes.io/zone
        containers:
    – name: pod-affinity
      image: your-container

    Аналогично узлу affinity match andlogical affinity expression, операторы. Однако в этом случае они применяются к селектору меток модулей, работающих на конкретном узле. Если указанное выражение соответствует метке целевого модуля, новый модуль размещается вместе с целевым модулем на том же компьютере.

    Антиродство

    В некоторых случаях предпочтительнее использовать метод «черного списка» для планирования подов. При таком подходе предотвращается планирование модулей на определенные узлы, если определенные условия не выполняются. Это видение реализовано в Kubernetes в анти-аффинности между узлами и модулями и в анти-аффинности между модулями.

    В основном анти-аффинити между модулями и узлами используется с выделенными узлами. Чтобы контролировать использование ресурсов в кластере, администраторы K8s могут выделять определенные узлы для определенных типов модулей и/или приложений.

    Другие интересные варианты использования анти-аффинности между модулями включают:

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

    Противопоставление Pod-to-node может быть достигнуто с помощью taints и допусков в Kubernetes. Давайте подробнее рассмотрим эту функцию.

    Пороки и допуски

    Taints (условия) и допуски могут помочь вам контролировать планирование модулей для определенных узлов без изменения существующих модулей.

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

    Внедрение taints и допусков довольно просто. Во-первых, добавьте taint к узлу, который должен применить нестандартное поведение планирования. Например: 

    kubectl taint nodes host2 storage=ssd:NoSchedule
    node «host1» tainted

    Формат taint: =: . Эффект taint, который я здесь использовал, предотвращает назначение любого модуля без соответствующих допусков на этот узел.

    Другие поддерживаемые эффекты заражения включают NoExecute и PreferNoSchedule («мягкая» версия NoSchedule). Если применяется эффект испорченности PreferNoSchedule, kube-scheduler будет пытаться не размещать pod без требуемого допуска на испорченную ноду, но это не требуется.

    Наконец, эффект NoExecute вызывает мгновенное вытеснение всех модулей без определенного допуска со стороны узла. Этот эффект может быть полезен, если у вас уже есть модули, работающие на узле, и они вам больше не нужны.

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

    .
    Apiversion: V1
    Метаданные:
    Имя: ESERCH
    Спецификация:
    Контейнеры:
    -Имя: ESERCH
    Изображение: Your-ES-Container
    Ресурсы:
    . Запросы:
    CPU: 0,8
    .
            процессор: 3.0
            память: 22Gi
      допуски:
      — ключ: «хранилище»
        оператор: «Равно»
        значение: «ssd»
        эффект: «NoSchedule»

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

    В этом случае я буду использовать taint «storage=ssd: NoSchedule», чтобы запланировать под, который мы определили выше, на узел.

    Блок Анти-Аффинити

    Можно отталкивать капсулы друг от друга с помощью функции анти-аффинити. Как упоминалось выше, одна из лучших практик в Kubernetes — избегать единой точки отказа, распределяя модули по разным зонам доступности. Я могу настроить аналогичное поведение в антиаффинной части спецификации пода. Для pod anti-affinity нам понадобится два pod'а:

    Первый стручок:

    apiVersion: v1
    вид: Pod
    метаданные:
    имя: s1
    метки:
    безопасность: s1
    спецификация:
    контейнеры:
    — имя: c1
    изображение: первое изображение

    Обратите внимание, что первый модуль имеет метку «безопасность: s1».

    Apiversion: V1
    СИЖД: POD
    Metadata:
    Имя: S2
    Специальность:
    Аффинность:
    0013           operator: In
              values:
              – s1
          topologyKey: kubernetes.io/hostname
    containers:
    – name: pod-anti-affinity
      image: second-image

    The second pod refers to the label selector “ security:s1» под спецификацией spec.affinity.podAntiAffinity. Как следствие, этот модуль не будет назначен узлу, на котором уже размещены какие-либо модули с меткой «security: s1».

    Заключение

    Расширенное планирование модулей в Kubernetes позволяет реализовать множество интересных вариантов использования и передовых методов развертывания сложных приложений и микросервисов в Kubernetes. Привязка модулей позволяет реализовать совместное размещение модулей и локальность данных для тесно связанных стеков приложений и микросервисов.

    Ниже вы можете найти «шпаргалку», в которой обобщаются некоторые ключевые данные для каждого типа ресурсов.

    Resource Type Use Cases Pros Cons Best Practices
    nodeSelector Assigning pods to nodes with specific labels Easy to использование, небольшие изменения в PodSpec Не поддерживает логические операторы, трудно расширить с помощью сложных правил планирования Этот ресурс следует использовать только в ранних версиях K8s до введения привязки узлов
    Привязки узлов Реализация локальности данных, запуск модулей на узлах с помощью специального программного обеспечения Выразительный логический синтаксис с операторами детальный контроль над правилами размещения модулей, поддержка «жестких» и «мягких» правил размещения модулей Требуется модификация существующих модулей для изменения поведения Используйте комбинацию «жестких» и «мягких» правил для различных вариантов использования и сценариев 9 То же, что и для привязки узлов документация по используемым меткам 
    Антипривязка к модулям Включение высокой доступности (посредством распределения модулей), предотвращение конкуренции между службами за ресурсы Детальный контроль над поведением отталкивания между модулями, поддержка жестких и мягких правил анти-аффинити для модулей Требуется модификация существующих модулей для изменения поведения Подобно сходству узлов
    Пороки и допуски

    2

    2 2
    Узлы с выделенным программным обеспечением, разделение ресурсов команды и т.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *