출처 : https://core.telegram.org/bots/webapps

Web Apps for Bots

텔레그램봇은 어떤 웹사이트도 완전히 대체할 수 있다.이들은 15개 결제 제공업체를 통한 원활한 승인, 통합 결제(구글 페이  Apple Pay 포함)를 지원하고 사용자에게 맞춤형 푸시 알림 등을 제공한다.

웹 앱으로 봇은 완전히 새로운 차원을 얻는다.봇 개발자들은 세계에서 가장 널리 사용되는 프로그래밍 언어인 자바스크립트와 무한히 유연한 인터페이스를 만들 수 있다.

 
 
 

웹 앱이 작동하는 것을 보려면 샘플 @DurgerKingBot을 사용해 보십시오.


웹 앱 설계

색 구성표

웹 앱은 항상 사용자의 현재  테마에 대한 데이터를 실시간으로 수신하므로 인터페이스의 모양을 그에 맞게 조정할 수 있다.예를 들어 사용자가 주간 모드와 야간 모드 간에 전환하거나 다양한 사용자 지정 테마를 사용하는 경우.

 
 
 
 
 
 

기술 정보로 이동

설계 지침

텔레그램 앱은 딱딱하고 매끄러우며 일관된 교차 플랫폼 설계를 따르는 것으로 알려져 있다.당신의 웹 앱은 이러한 원칙을 이상적으로 반영해야 한다.

  • 모든 요소는 모바일 우선 접근방식으로 대응하고 설계되어야 한다.
  • 상호작용 요소는 이미 존재하는 UI 구성요소의 스타일, 동작 및 의도를 모방해야 한다.
  • 포함된 모든 애니메이션은 매끄러워야 하며 이상적으로는 60fps가 되어야 한다.
  • 모든 입력과 이미지는 접근성을 위한 라벨을 포함해야 한다.
  • 앱은 API가 제공하는 역동적인 테마 기반 색상을 모니터링하고 그에 맞게 활용함으로써 원활한 경험을 제공해야 한다.

웹 애플리케이션 구현

텔레그램은 현재 키보드 버튼, 인라인 버튼, 봇 메뉴 버튼, 첨부 파일 메뉴의 네 가지 웹 앱 실행 방법을 지원하고 있다.

 

키보드 버튼 웹 앱

웹_app 타입 키보드 버튼에서 시작된 TL;DR: 웹 앱은 텔레그램으로 서비스 메시지에서 bot에 데이터를 다시 보낼 수 있다.WebApp.sendData.이를 통해 봇이 외부 서버와 통신하지 않고도 응답을 만들 수 있다.

사용자들은 사용자 지정 키보드, 봇 메시지 아래의 버튼을 사용하여 봇과 상호작용할 수 있으며, 텔레그램이 지원하는 자유형 문자 메시지 첨부파일 형식(사진과 비디오, 파일, 위치, 연락처, 여론 조사)을 통해 봇과 상호작용할 수 있다.훨씬 더 많은 유연성을 위해, 봇은 HTML5의 모든 힘을 활용하여 사용자에게 친숙한 입력 인터페이스를 만들 수 있다.

지정된 URL에서 웹 앱을 여는 web_app 유형 키보드버튼을 보낼 수 있다.

사용자로부터 봇으로 데이터를 다시 전송하기 위해, 웹 앱은 텔레그램에 전화를 걸 수 있다.WebApp.sendData 메서드.데이터는 서비스 메시지에서 문자열로 봇에 전송된다.봇은 수신 후 사용자와 계속 통신할 수 있다.

좋은 방법:

  • сustom data input interface(날짜 선택을 위한 개인화된 캘린더, 고급 검색 옵션이 있는 목록에서 데이터 선택, 사용자가 "휠을 돌리고" 사용 가능한 옵션 중 하나를 선택할 수 있는 랜덤라이저 등)
  • 특정 봇에 의존하지 않는 재사용 가능한 구성 요소.

인라인 버튼 웹 앱

TL;DR: @DurgerKingBot과 같은 대화형 웹 앱의 경우 기본 사용자 정보를 얻고 사용자를 대신하여 봇과의 채팅에 메시지를 보내는 데 사용할 수 있는 웹_app 유형 인라인 키보드 버튼을 사용하십시오.

텍스트 데이터만 수신하는 것이 부족하거나 좀 더 고급스럽고 개인화된 인터페이스가 필요한 경우 web_app 타입의 인라인 키보드버튼을 사용하여 웹 앱을 열 수 있다.

버튼에서, 웹 앱은 버튼에 지정된 URL로 열릴 것이다.사용자의 테마 설정 외에도 기본 사용자 정보(User Information)를 수신한다.ID,name,username,language_code) 및 세션의 고유 식별자인 query_id. 이 식별자는 사용자를 대신하여 bot로 메시지를 다시 보낼 수 있다.

봇은 봇 API 메서드에 응답WebAppQuery를 호출하여 사용자가 보낸 인라인 메시지를 bot로 다시 전송하고 웹 앱을 닫을 수 있다.메시지를 받은 후, 봇은 사용자와 계속 통신할 수 있다.

좋은 방법:

  • 완전한 웹 서비스와 모든 종류의 통합.
  • 사용 사례는 사실상 무제한이다.

메뉴 단추에서 웹 앱 시작

TL;DR: 웹 앱은 사용자 정의된 메뉴 버튼에서 실행할 수 있다.이것은 단순히 앱에 더 빨리 접속할 수 있는 방법을 제공하며, 그렇지 않으면 인라인 버튼에서  앱을 시작하는 것과 동일하다.

기본적으로 봇과의 채팅은 항상 나열된 모든 명령에 빠르게 액세스할 수 있는 편리한 메뉴 버튼을 보여준다.Bot API 6.0으로 이 버튼을 사용하여 대신 웹 앱을 실행할 수 있다.

 

메뉴 버튼을 구성하려면 메뉴 버튼이 표시할 텍스트와 웹 앱 URL을 지정해야 한다.이러한 파라미터를 설정하는 방법에는 다음 두 가지가 있다.

  • 모든 사용자에 대해 단추를 사용자 정의하려면 @BotFather(다음)를 사용하십시오./setmenubutton명령 또는 Bot Settings > 메뉴 버튼).
  • 모든 사용자 특정 사용자 모두에 대해 단추를 사용자 정의하려면 Bot API에서 setChatMenuButton 방법을 사용하십시오.예를 들어, 사용자의 언어에 따라 단추 텍스트를 변경하거나 봇의 사용자 설정에 따라 다른 웹 앱에 대한 링크를 표시하십시오.

이와 별도로 메뉴 버튼을 통해 오픈한 웹 앱은 인라인 버튼을 사용할 때와 똑같은 방식으로 작동한다.

@DurgerKingBot은 인라인 버튼과 메뉴 버튼 모두에서 웹 앱을 실행할 수 있다.

첨부 파일 메뉴에서 웹 앱 시작

TL;DR: Web App Bots는 사용자의 첨부 메뉴에 직접 추가할 것을 요청할 수 있어, 어떠한 개인 채팅에서도 빠르게 시작할 수 있다.이 모드를 사용하려면 @DurgerKingBot에 대한 이 첨부 파일 메뉴 링크를 연 다음

개인 채팅 메뉴.

웹 앱봇은 사용자의 첨부 메뉴에 직접 추가할 것을 요청할 수 있어, 어떤 사적인 채팅(사용자 또는 다른 봇과 함께)에서도 빠르게 시작할 수 있다.

첨부 메뉴 통합은 현재 텔레그램 광고 플랫폼에서 주요 광고주만 이용할 수 있다.그러나 모든 봇 테스트 서버 환경에서 사용할 수 있다.

봇에 이 기능을 사용하려면 테스트 서버의 계정에서 @BotFather를 열고/setattach명령 – 또는 Bot Settings > Configure Attachment 메뉴로 이동하십시오.그런 다음 첨부파일 메뉴의 아이콘을 통해 봇의 웹 앱을 실행하기 위해 열 URL을 지정하십시오.

봇은 사용자의 테마 설정 외에 기본 사용자 정보(bot)를 받는다.ID,name,username,language_code,photo), 채팅 파트너에 대한 공개 정보(ID,name,username,photo봇을 연 사용자를 대신하여 모든 유형의 메시지를 채팅으로 보낼 수 있는 웹 보기 세션 query_id의 고유 식별자.

봇은 봇 API 메서드가 응답하는 웹앱쿼리를 호출할 수 있는데, 봇을 통해 사용자가 인라인 메시지를 시작한 개인 채팅으로 보내고 웹앱을 닫는다.

첨부파일에 봇을 추가하는 방법에 대해 자세히 알아보세요.


웹 응용 프로그램 초기화 중

웹 앱을 텔레그램 클라이언트에 연결하려면 다음 위치에 스크립트 tembol-web-app.js를 배치하십시오.<head>다음 코드를 사용하여 다른 스크립트보다 먼저 태그 지정:

스크립트가 연결되면window.Telegram.WebApp다음 필드에서 객체를 사용할 수 있게 된다.

밭유형설명
initData 원시 데이터가 웹 앱으로 전송되어 데이터 검증에 편리한 문자열.
경고:봇 서버에서 사용하기 전에 이 필드의 데이터를 확인하십시오.
initDataUnsafe WebAppInitData 입력 데이터가 웹 앱으로 전송된 개체.
경고: 이 필드의 데이터를 신뢰할 수 없다.봇의 서버에서 initData의 데이터를 유효성을 확인한 후에만 사용해야 한다.
colorScheme 현재 텔레그램 앱에서 사용되는 색상표."밝음" 또는 "어두움" 중 하나.
CSS 변수로도 사용 가능var(--tg-color-scheme).
테마파람 테마파람스 텔레그램 앱에서 사용되는 현재 테마 설정을 포함하는 개체.
확장됨 부울 웹 앱이 사용 가능한 최대 높이로 확장된 경우 True.False, 웹 앱이 화면의 일부를 차지하고 확장() 방법을 사용하여 전체 높이로 확장할 수 있는 경우.
뷰포트높이 플로트 웹 앱에서 볼 수 있는 영역의 현재 높이.CSS에서 변수로도 사용 가능var(--tg-viewport-height).

이 애플리케이션은 웹 앱의 상단 부분만 표시할 수 있으며 하단 부분은 화면 영역 밖에 남아 있다.이 위치에서 사용자는 웹 앱을 최대 높이까지 "끌어 당길 수 있고, 봇은 expansion() 방식을 호출하여 같은 작업을 할 수 있다.웹 앱의 위치가 변경됨에 따라 보이는 영역의 현재 높이 값이 실시간으로 업데이트된다.

이 값의 새로 고침 속도는 창의 아래쪽 테두리를 원활하게 따르기에 충분하지 않다는 점에 유의하십시오.인터페이스 요소를 가시 영역 하단에 고정하는 데 사용해서는 안 된다.그 가치를 이용하는 것이 더 적절하다.viewportStableHeight이 목적으로 야전하다
뷰포트스테이블높이 플로트 웹 앱의 마지막 안정적인 상태에서 보이는 영역의 높이.CSS에서 변수로도 사용 가능var(--tg-viewport-stable-height).

이 애플리케이션은 웹 앱의 상단 부분만 표시할 수 있으며 하단 부분은 화면 영역 밖에 남아 있다.이 위치에서 사용자는 웹 앱을 최대 높이까지 "끌어 당길 수 있고, 봇은 expansion() 방식을 호출하여 같은 작업을 할 수 있다.의 가치와는 달리viewportHeight, 값viewportStableHeight사용자 제스처 또는 애니메이션 중에 웹 앱의 위치가 변경될 때 변경되지 않음.의 가치viewportStableHeight모든 제스처와 애니메이션이 완성되고 웹 앱이 최종 크기에 도달한 후에 업데이트될 것이다.

이벤트 기록 viewportChanged매개 변수를 전달하여isStateStable=true이 기능을 사용하면 가시 영역의 높이에 대한 안정적인 상태가 변경될 때 추적할 수 있다.
메인버튼 메인버튼 텔레그램 인터페이스의 웹 앱 하단에 표시되는 메인 버튼을 제어하기 위한 개체.
onEvent(eventType, eventHandler) 함수 앱 이벤트 핸들러를 설정하는 방법.사용 가능한 이벤트 목록을 확인하십시오.
오프이벤트(이벤트 유형, eventHandler) 함수 이전에 설정된 이벤트 핸들러를 삭제하는 방법.
sendData(데이터) 함수 봇에 데이터를 전송하는 데 사용되는 방법.이 방법을 호출하면 최대 4096바이트 길이의 데이터 데이터가 담긴 서비스 메시지가 봇에 전송되고, 웹앱은 폐쇄된다.메시지 클래스에서 web_app_data 필드를 참조하십시오.

이 방법은 키보드 버튼을 통해 실행된 웹 앱에서만 사용할 수 있다.
레디슈트 함수 텔레그램 앱에 웹 앱이 표시될 준비가 되었음을 알리는 방법.
이 방법은 모든 필수 인터페이스 요소가 로드되는 대로 가능한 한 빨리 호출하는 것이 좋다.이 방법을 호출하면 로딩 자리 표시자가 숨겨지고 웹 앱이 표시된다.
메서드를 호출하지 않으면 페이지가 완전히 로드된 경우에만 자리 표시자가 숨겨진다.
팽창시키다 함수 웹 앱을 사용 가능한 최대 높이로 확장하는 방법.웹 앱이 최대 높이로 확장되었는지 확인하려면 텔레그램 값을 참조하십시오.WebApp.isExpanded 매개 변수
클로즈업된 함수 웹 앱을 닫는 방법.

테마파람스

웹앱은 텔레그램 사용자의 앱에 맞춰 실시간으로 인터페이스의 외관을 조정할 수 있다.이 개체에는 사용자의 현재 테마 설정이 포함되어 있으며,

밭유형설명
bg_color 선택 사항.의 배경색#RRGGBB형식을 갖추다
CSS 변수로도 사용 가능var(--tg-theme-bg-color).
text_color 선택 사항.의 기본 텍스트 색상#RRGGBB형식을 갖추다
CSS 변수로도 사용 가능var(--tg-theme-text-color).
힌트_색깔 선택 사항.힌트 텍스트 색:#RRGGBB형식을 갖추다
CSS 변수로도 사용 가능var(--tg-theme-hint-color).
link_color 선택 사항.링크 색상:#RRGGBB형식을 갖추다
CSS 변수로도 사용 가능var(--tg-theme-link-color).
button_color 선택 사항.단추 색상:#RRGGBB형식을 갖추다
CSS 변수로도 사용 가능var(--tg-theme-button-color).
button_text_color 선택 사항.단추 텍스트 색#RRGGBB형식을 갖추다
CSS 변수로도 사용 가능var(--tg-theme-button-text-color).
 

메인버튼

이 물체는 텔레그램 인터페이스의 웹 앱 하단에 표시되는 메인 버튼을 제어한다.

밭유형설명
문자 메시지를 보내다 현재 단추 텍스트.기본적으로 계속으로 설정하십시오.
색을 칠하다 현재 단추 색상.로 설정themeParams.button_color결석하여
텍스트 색 현재 단추 텍스트 색상.로 설정themeParams.button_text_color결석하여
볼 수 있는 부울 버튼이 표시되는지 여부를 표시한다.기본적으로 false로 설정하십시오.
isActive 부울 버튼이 활성 상태인지 여부를 표시한다.기본적으로 true로 설정하십시오.
isProgressVisible 부울 읽기 전용.버튼이 로드 표시기를 표시하는지 여부를 표시한다.
setText(텍스트) 함수 버튼 텍스트를 설정하는 방법.
On클릭(콜백) 함수 누름 이벤트 핸들러 버튼을 설정하는 방법.에 대한 별칭Telegram.WebApp.onEvent('mainButtonClicked', callback)
쇼윈도 함수 버튼을 볼 수 있게 하는 방법.
첨부파일 메뉴에서 웹 앱을 열면 사용자가 웹 앱 인터페이스와 상호 작용할 때까지 기본 단추가 숨겨진다는 점에 유의하십시오.
숨다 함수 버튼을 숨기는 방법.
활성화하다 함수 버튼을 활성화하는 방법.
불능화하다 함수 버튼을 비활성화하는 방법.
showProgress(활성 상태로 leaveActive) 함수 버튼에 로드 표시기를 표시하는 방법.
버튼에 연결된 동작에 시간이 오래 걸릴 수 있는 경우 로딩 진행률을 표시하는 것이 좋다.기본적으로 이 버튼은 작업이 진행 중일 때 비활성화된다.매개 변수인 경우leaveActive=true버튼이 활성화 상태로 유지됨.
hideProgress() 함수 로드 표시기를 숨기는 방법.
setParams(파람) 함수 버튼 파라미터를 설정하는 방법.매개 변수 매개 변수는 변경해야 하는 하나 이상의 필드를 포함하는 개체:
텍스트 - 버튼 텍스트;
color - 버튼 색상;
text_color - 버튼 텍스트 색상;
is_active - 버튼 활성화;
is_light - 버튼을 표시하십시오.

이 모든 방법은 체인으로 연결될 수 있도록 메인버튼 객체를 반환한다.

WebAppInitData

이 개체에는 웹 앱이 열리면 전송되는 데이터가 들어 있다.키보드 버튼에서 웹 앱이 실행된 경우 비어 있다.

밭유형설명
query_id 선택 사항.응답WebAppQuery 방법을 통해 메시지를 전송하는 데 필요한 웹 앱 세션의 고유 식별자.
사용자 WebAppUser 선택 사항.현재 사용자에 대한 데이터가 들어 있는 개체.
리시버 WebAppUser 선택 사항.첨부 파일 메뉴를 통해 봇이 시작된 채팅에서 현재 사용자의 채팅 파트너에 대한 데이터가 들어 있는 개체.첨부 파일 메뉴를 통해 실행된 웹 앱의 경우에만 반환됨.
start_param 선택 사항.링크를 통해 전달된 startattach 매개 변수의 값.링크를 통해 첨부 파일 메뉴에서 시작할 때만 웹 앱으로 반환됨.

의 값start_param또한 파라미터는 GET-매개변수에서도 전달된다.tgWebAppStartParam웹 앱이 올바른 인터페이스를 바로 로드할 수 있도록 하기 위해서입니다.
auth_date 정수 양식이 열린 유닉스 시간.
해시하다 통과된 모든 매개 변수의 해시, 봇 서버가 유효성을 확인하는 데 사용할 수 있다.

WebAppUser

이 개체에는 웹 앱 사용자의 데이터가 들어 있다.

밭유형설명
id 정수 사용자 또는 봇의 고유 식별자.이 숫자는 32개 이상의 유의 비트를 가질 수 있으며 일부 프로그래밍 언어는 이를 해석하는 데 어려움/침묵적인 결함을 가질 수 있다.최대 52개의 유의 비트를 가지고 있으므로, 64비트 정수나 이중 정밀한 플로트 타입은 이 식별자를 저장하기에 안전하다.
is_bot 부울 선택 사항.맞아, 이 사용자가 봇이라면.수신기 필드에서만 반환됨.
first_name 사용자 또는 봇의 이름.
last_name 선택 사항.사용자 또는 봇의 성.
사용자 이름 선택 사항.사용자 또는 봇의 사용자 이름.
language_code 선택 사항.사용자 언어의 IETF 언어 태그.사용자 필드에서만 반환됨.
photo_properties 선택 사항.사용자 프로필 사진의 URL.사진은 .jpeg 또는 .svg 형식일 수 있다.첨부 파일 메뉴에서 실행된 웹 앱에 대해서만 반환됨.

웹 앱을 통해 수신된 데이터의 유효성을 확인하는 중

웹앱을 통해 수신한 데이터를 검증하려면 텔레그램에서 데이터를 전송해야 한다.WebApp.init데이터 필드의 bot 백엔드.데이터는 일련의 필드 값 쌍으로 구성된 쿼리 문자열이다.

수신된 해시 매개 변수와 데이터 체크 문자열의 HMAC-SHA-256 시그니처 16진수 표현, 비밀 키, 즉  토큰의 HMAC-SHA-256 시그니처와 상수 문자열의 HMAC-SHA-256 시그니처를 비교하여 수신된 데이터의 무결성을 확인할 수 있다.WebAppData열쇠로 쓰였다.

데이터 확인 문자열(Data-check-string)은 수신된 모든 필드의 체인으로, 알파벳순으로 정렬되어 있다.key=<value>구분 기호로 사용되는 라인 피드 문자('\n', 0x0A) 포함 - 예:'auth_date=<auth_date>\nuser=<user>\nquery_id=<query_id>'.

전체 점검은 다음과 같이 보일 수 있다.

data_check_string = ...
secret_key = HMAC_SHA256(<bot_token>, "WebAppData")
if (hex(HMAC_SHA256(data_check_string, secret_key)) == hash) {
  // data is from Telegram
}

오래된 데이터의 사용을 방지하려면 웹 앱에서 데이터를 받은 시간의 Unix 타임스탬프가 포함된 auth_date 필드를 추가로 확인하십시오.

검증되면 서버에서 데이터를 사용할 수 있다.복잡한 데이터 유형은 JSON 직렬화된 개체로 표현된다.

웹 앱에 사용 가능한 이벤트

웹 앱은 텔레그램 앱에서 이벤트를 수신할 수 있으며, 이 앱에 핸들러를 첨부할 수 있다.Telegram.WebApp.onEvent(eventType, eventHandler)방법의내부eventHandler이 물체는 텔레그램에 관한 것이다.WebApp, 처리기로 전송되는 매개 변수 집합은 이벤트 유형에 따라 달라진다.다음은 가능한 이벤트 목록이다.

eventType설명
themeChanged 사용자의 텔레그램 앱(야간 모드로 전환 포함)에서 테마 설정이 변경될 때마다 발생한다.
eventHandler는 매개변수를 수신하지 않으며, 이를 통해 새로운 테마 설정 및 색상표를 수신할 수 있다.테마파람과 이것.colorScheme.
viewportChanged 웹 앱의 볼 수 있는 섹션이 변경될 때 발생한다.
eventHandler는 단일 필드가 stateStable인 객체를 수신한다.만약isStateStable= true, 웹 앱의 크기 조정이 완료됨.거짓일 경우 크기 조정은 계속된다(사용자가 웹 앱을 확장하거나 축소하거나 애니메이션 오브젝트가 재생 중).이 뷰포트에서 볼 수 있는 섹션 높이의 현재 값을 사용할 수 있음키.
mainButtonClicked 메인 버튼을 누를 때 발생한다.
eventHandler는 매개 변수를 수신하지 않는다.

첨부 파일에 봇 추가

첨부 메뉴 통합은 현재 텔레그램 광고 플랫폼에서 주요 광고주만 이용할 수 있다.그러나 모든 봇 테스트 서버 환경에서 사용할 수 있다.테스트 서버의 Botfather와 대화하여 통합을 설정하십시오.

특수 링크는 첨부 파일 메뉴에 봇을 추가하는 데 사용된다.

https://t.me/botusername?startattach
또는
https://t.me/botusername?startattach=command

예를 들어 @DurgerKingBot에 대해 이 첨부 파일 메뉴 링크를 연 다음

개인 채팅 메뉴.

링크를 열면 사용자에게 봇을 첨부 메뉴에 추가하라는 메시지가 표시된다.봇이 이미 추가된 경우 첨부파일 메뉴는 현재 채팅에서 열리며 그곳의 봇으로 리디렉션된다(1대1 채팅에서 링크를 연 경우).링크에 비어 있지 않은 startattach 매개변수가 포함된 경우, start_param 필드와 GET 매개변수 tgWebAppStartParam에서 웹 앱으로 전달된다.

다음과 같은 링크 형식도 지원된다.

https://t.me/username?attach=botusername
https://t.me/username?attach=botusername&startattach=command
https://t.me/+1234567890?attach=botusername
https://t.me/+1234567890?attach=botusername&startattach=command

이러한 링크는 특정 사용자와의 채팅의 첨부파일 메뉴에서 웹 앱을 연다.봇이 첨부파일에 아직 추가되지 않은 경우, 사용자에게 첨부파일에 추가하라는 메시지가 나타날 것이다.링크에 비어 있지 않은 startattach 매개변수가 포함된 경우, start_param 필드와 GET 매개변수 tgWebAppStartParam에서 웹 앱으로 전달된다.

테스트 환경에서 봇 사용

테스트 환경에 로그인하려면 다음 중 하나를 사용하십시오.

  • iOS: Settings 아이콘 > Accounts > 다른 계정에 로그인 > Test를 10회 탭한다.
  • 텔레그램 데스크톱: ☰ Settings > Shift + Alt + 'Add Account'를 열고 'Test Server'를 선택한다.
  • macOS: 설정 아이콘을 10번 클릭하여 디버그 메뉴를 열고 ⌘ + '계정 추가'를 클릭한 후 전화 번호를 통해 로그인하십시오.

테스트 환경은 주 환경과 완전히 분리되어 있으므로 @BotFather로 새로운 사용자 계정 새로운 봇을 만들어야 할 것이다.

봇 토큰을 받은 후 다음과 같은 형식으로 Bot API에 요청을 보낼 수 있다.

https://api.telegram.org/bot/test/METHOD_NAME

 

https://core.telegram.org/bots/webapps

 

Web Apps for Bots

Telegram bots can completely replace any website. They support seamless authorization, integrated payments via 15 payment…

core.telegram.org

 

 

 

 

 

💎TON 재단, 6일만에 7억9100만 달러 확보!

TON 블록체인은 TON 재단이 주도한 펀딩 라운드에서 7억 9100만 달러를 모금했다고 밝혔습니다. TON 블록체인은 확보된 자금을 TON 생태계를 확장시키고 파트너십을 추구하기 위한 전략을 지원하고 실행하는데 사용될 것이라고 밝혔습니다.

TON 재단이 적립계좌를 공개한 후 이 주소는 불과 6일 만에 5억 TON코인을 받으면서 레이어 1 블록체인 중 가장 큰 펀딩 라운드 중 하나가 되었습니다. TON 블록체인은 또한 현재까지 세 번째로 큰 암호화폐 모금 규모를 기록하였습니다.

TON 블록체인은 개발 단계부터 사용자가 매우 빠른 속도와 사용자 친화적인 앱, 그리고 버그 없는 확장성을 경험할 수 있는 플랫폼을 만드는데 주력해 TON이 모든 사용자들에게 가장 알맞는 블록체인이 될 가능성을 제공합니다.

 

 

https://t.me/telonews_kr/2421

 

텔로뉴스

💎TON 재단, 6일만에 7억9100만 달러 확보! TON 블록체인은 TON 재단이 주도한 펀딩 라운드에서 7억 9100만 달러를 모금했다고 밝혔습니다. TON 블록체인은 확보된 자금을 TON 생태계를 확장시키고 파트

t.me

 


 

지난 몇 개월 동안 우리는 새롭고 흥미로운 최상위 파트너십 및 통합을 추구하기 위한 리소스를 확보하기 위해 더 많은 Toncoin 보유량을 만들려는 잠재 파트너와 TON 채굴자로부터 제안을 받았습니다.

우리는 TON 생태계의 추가 개발에 상당한 자금이 필요하다는 것을 이해하고 있으며 대규모 보유자가 이를 지원할 준비가 되어 있다는 것을 알게 되어 기쁩니다.

위의 사항을 고려하여 우리는 신제품 통합, 커뮤니티 성장 캠페인 및 블록체인 영역 및 그 이상에서 세계 최고의 기업과의 파트너십을 지원하는 데 중점을 둘 새로운 Toncoin 예비 구성을 발표합니다.

보안에 대한 수요가 증가하고 새로운 예비금의 특수성을 나타내기 위해 우리는 다중 서명 지갑 스마트 계약으로 주소를 만들었습니다.
EQAhE3sLxHZpsyZ_HecMuwzvXHKLjYx4kEUehhOy2JmCcHCT

지금은 비어 있지만 도움을 제공한 커뮤니티 구성원이 해당 보호 구역을 형성하는 데 참여하고 TON 생태계가 성장하고 번영하는 데 도움이 되기를 기대합니다.

우리는 모든 TON 애호가와 대규모 보유자를 초대하여 새로운 매장량에 기부하고 생태계의 추가 성장을 지원합니다.

https://t.me/tonblockchain/116

 

The Open Network

Over the last few months, we’ve received suggestions from prospective partners and TON miners to create a larger reserve of Toncoin to secure resources for chasing new and exciting top-tier partnerships and integrations. We understand that further develo

t.me

 

 

(주) Toncoin (The Open Network)은
한국에 상장된 Ton (Tokamak Network)와는 전혀 다른 코인입니다.
Toncoin (The Open Network)은 아직 한국거래소에는 상장되지 않았습니다.(2022년기준)

 

https://youtu.be/hDZcdZlr5n0

 

— TON 홈페이지 : https://ton.org/

— TON 한국어 커뮤니티(Korea) - @toncoin_kr_chat

 

 

2022년 4월기준, Ethereum2.0 Roadmap FAQ (이더리움2.0 로드맵 FAQ)

 

출처 : https://github.com/timbeiko/eth-roadmap-faq#merge-timelines

 

GitHub - timbeiko/eth-roadmap-faq: FAQ about the Ethereum Roadmap

FAQ about the Ethereum Roadmap. Contribute to timbeiko/eth-roadmap-faq development by creating an account on GitHub.

github.com

 

 

 

병합

  • Kiln merge에 실제로 무신일이 있었나요 ?
    • 메인넷과 마찬가지로 Kill은 별도의 PoW와 PoS 체인으로 출시되었다.그것은 The Merge를 통과했고 지금은 PoS에 의해 완전히 운영된다.
  • 실제 킬로마가 메인넷 합병을 위해 현재의 스펙을 따랐을까?내 말은, 그것이 메인넷 합병을 통해 일어날 일과 같았는가? 즉, 벨라트릭스 포크의 스펙을 따르는가?
    • 응. 킬이 생방송된 후에 스펙을 약간 수정하긴 했지만 역호환성이었어.네트워크에 대한 현재 사양은 여기에서 찾을 수 있다.
    • 우리는 지금 큰 스펙의 변화를 기대하지 않으며, Killa에서 툴링/인프라/애플리케이션 개발자 테스트를 통해 자사의 제품이 Merge 이후 Etherum 컨텍스트에서 예상대로 작동하는지 확인할 것을 강력히 권고한다.
  • 가마 테스트넷 비콘 체인은 주계약과 스마트계약이 있는 것 같다.이것은 http://ethereum.org이 비콘 체인에 대해 제안하는 것과 반대된다.이것은 단순히 내가 블록 탐험가들에 의해 혼란스러워서일까?
      • Merge 이후, Beacon 블록은 현재 PoW 블록이 포함하는 트랜잭션 페이로드(payload)를 포함한다.우리는 이것을 "The"라고 부른다.ExecutionPayload명세서어떻게 생겼는지 보여주는 다이어그램:
      •  
    • 위의 PoW와 비콘 체인의 처음 두 블록은 프리머지(pre-merge)이며, 마지막 두 블록은 The Merge(The Merge) 이후다.마지막 PoW 블록이 생성되면 후속 Beacon Chain 블록에는 트랜잭션 데이터가 포함된다.이것에 대해 여기에 더 길게 게시하십시오.
  • 높은 수준에서, 블록 처리 흐름은 어떤 모습일까, 포스트 머지?
    1. 블록을 제안하기 위해 검증자가 선택됨
    2. 이 검증자는 엔진 API를 통해 실행 계층(EL)에게 전송을 요청한다.ExecutionPayload
    3. EL은 가장 수익성이 높은 유효 트랜잭션 집합을 포함하는 페이로드(payload)를 합의 계층(CL)에 반환한다.
    4. CL은 이 페이로드(payload)를 포함하는 블록을 제안하고 Beacon Chain p2p 네트워크에 전파한다.
      • 주의:
        1. 개별 거래는 여전히 EL p2p 네트워크에서 험담하고 있으며 EL은 전적으로 거래 풀의 유지관리를 담당하고 있다.전체 블록은 CL p2p 네트워크에 전파된다.
        2. 검증자는 수수료를 받고자 하는 실행 계층의 주소를 지정한다.거래 수수료는 검증자 지분과 보상처럼 비콘 체인에서 결코 "잠금"되지 않는다.
    5. 다른 검증자가 블록을 증명하고 유효한 경우 Beacon Chain p2p 네트워크에 전파
  • The Merge의 테스트 프로세스는 어떠한가?
    • 우리는 여러 가지 테스트 작업을 병행하고 있다.여기서 목록을 사용할 수 있음

Kiln merge에 실제로 무슨 일이 있었나?

 

What actually went on with the Kiln merge?

the Kiln merge

the Kiln merge

섀도우 포킹

  • 섀도우 포킹이란?
    • TL;DR: 섀도 포크는 소수의 노드로 라이브 네트워크를 포킹하여 만든 새로운 디브넷이다.섀도 포크는 동일한 상태와 기록을 유지하므로 메인 네트워크에서 트랜잭션을 재생할 수 있다.
    • 더 긴 버전:섀도 포크란 특정 지점에서 이더리움 네트워크에서 포크를 떼도록 소수의 노드를 구성하는 것을 말한다.The Merge의 맥락에서, 우리는 전체 네트워크보다 더 이른 시점에 Merge를 통해 실행되도록 설정된 노드를 실행함으로써 이 작업을 수행한다.이를 통해 섀도-포크 네트워크와 유사한 조건에서 업그레이드가 어떻게 이루어졌는지를 테스트할 수 있지만, 대부분의 노드가 이러한 일이 발생했음을 인식하지 못하고 있다.섀도 포크 이후, 메인 체인에서 유효한 트랜잭션을 포크 체인에서도 재생할 수 있어, 원래의 네트워크의 처리량을 시뮬레이션 할 수 있다.@parithosh_j는 더 자세한 내용을 담은 좋은 트윗 스레드를 가지고 있다.
    • 아래 다이어그램은 연결된 스레드에서 섀도 포크 이후의 네트워크 모양을 보여준다.
      • 괴를리 블록의 rop 행은 섀도 포크를 인식하지 못하는 정식 체인의 노드를 보여준다.
      • 고엘리 블록의 가운데 줄에는 그림자 포크 체인의 노드가 표시되는데, 이 노드는 TTD(Total Terminal Iconcidence)가 맞으면 포크(Fork)라고 하는 구성이 변형되어 있다.
      • 아래쪽 행은 그림자 포크의 목적으로만 발사된 비콘 체인을 보여준다. 비콘 체인은 TTD가 맞을 때 체인에 대한 합의를 제공한다.
      • TTD가 적중된 후에도 표준 체인의 노드는 정상적으로 블록을 계속 생산한다. 즉, "그들을 위해" 아무 일도 일어나지 않았다.
      • TTD가 적중되면 수정된 구성이 있는 노드가 Fork off되어 The Merge를 통해 실행된다.첫 번째 Merge 이후 블록은 비콘 체인의 다음 검증자에 의해 생산된다.이 블록은 표준 체인에서 볼 수 있는 어떤 거래도 포함할 수 있지만, 포함된 정확한 거래나 그 순서가 반드시 표준 체인에서와 같은 것은 아니다.
  • 섀도 포크는 왜 유용한가?
    • 섀도 포크는 소수의 노드만을 사용하여 표준 체인을 중단하지 않고 Merge가 발생할 때 노드가 어떻게 반응하는지 볼 수 있도록 해준다.섀도 포크는 우리에게 새로운 테스트넷을 출시하는 것보다 테스트할 수 있는 더 현실적인 환경을 제공한다. 기존 테스트넷은 이미 그것들에 대해 유기적으로 발생하는 트랜잭션을 가지고 있고, 새로운 테스트넷보다 노드를 더 많은 스트레스를 주는 큰 상태 크기 및 블록 히스토리를 가지고 있기 때문이다.따라서 표준 네트워크 운영에 잠재적으로 영향을 주지 않고 노드에서 "실제" 성능 지표를 얻을 수 있다.
  • 섀도우 포크 메인넷을 줄 수 있어?
    • 그래, 그리고 이제 우리가 해냈어!섀도 포킹 메인넷은 노드의 상태와 내역이 크고 트랜잭션이 가장 복잡할 때 가능한 가장 가혹한 조건에서 노드가 어떻게 반응하는지 보여주기 때문에 매우 유용하다.메인넷 섀도포크 이후, 포키드 네트워크에 가입하려고 할 때 노드가 얼마나 안정적인지, 얼마나 잘 동기화되는지 등을 테스트할 수도 있다.이는 우리에게 전환 자체뿐만 아니라, 새로운 노드가 Merge 이후 상태에서 네트워크에 가입할 때 어떻게 동작하는지에 대한 데이터도 제공한다.
  • The Process™에서 Shadow Forks는 몇 단계인가?
    • 섀도 포크는 구현이 예상대로 작동한다는 자신감을 높이는 데 도움이 된다.일단 그들이 모든 구현에 걸쳐 순조롭게 진행되면, 우리는 The Merge를 통해 기존의 테스트넷을 자신 있게 실행할 수 있다.섀도 포크의 노드는 소규모 운영자 집합에 의해 제어된다는 점에 주목할 필요가 있다: 일부 공용 테스트넷은 훨씬 더 광범위한 검증자 집합을 가지고 있다.일단 테스트넷이 업그레이드되고 안정되면, 우리는 메인넷에서 Merge가 일어날 수 있도록 계획할 수 있다.

타임라인 병합

  • '합병'은 언제 일어날까?
    • Merge의 공식 날짜는 아직 없다.날짜는 고객 팀이 소프트웨어 구현이 철저히 테스트되었고 버그가 없다고 확신할 때에만 설정될 것이다.모든 날짜 발표는 blog.ethereum.org을 통해 전달될 것이다.
  • 합병 전에 무슨 일이 일어나야 하는가?
    • 2022년 4월 현재, 모든 고객 팀은 테스트 스위트, 새로운 테스트넷의 출시, 섀도 포크를 통해 테스트를 거친 The Merge에 대해 진행 중인 구현을 가지고 있다.
    • 기존 테스트넷과 이더리움 메인넷을 모두 대상으로 실행되는 섀도우 포크는 클라이언트에서 구현 문제를 드러냈다.각 팀은 현재 이러한 문제를 해결하고 정기적으로 섀도 포크를 다시 실행하여 수정 사항을 테스트하고 있다.
    • 일단 클라이언트가 섀도 포크 동안 문제 없이 작업하면 기존 이더리움 테스트넷(Ropsten, Goerli 등)이 더 메지어를 통해 실행된다.이 시점에서 blog.ethereum.org에서 발표가 있을 것이다.
    • 일단 테스트넷이 성공적으로 업그레이드되고 안정된 상태를 유지하면, Ethereum 메인넷에서 업그레이드가 이루어질 시간이 설정될 것이다.
      • 이전의 이더리움 업그레이드와는 달리, Merge는 블록 타임에 의해 트리거되지 않을 것이다.대신 총 난이도에 의해 촉발될 것이다.이러한 것들이 블록 타임보다 추정하기 어렵다는 점을 감안할 때, 더 병합이 네트워크에서 라이브로 진행되는 시간 선택과 시간 사이의 지연은 이전의 이더리움 업그레이드보다 약간 더 짧을 수 있다.
    • 여기서 메인넷 업그레이드를 찾기 전에 완료해야 할 작업 목록.
  • 난이도 폭탄이 타임라인에 어떤 영향을 미치는가?
    • 난이도 폭탄은 5월경 이더리움 네트워크에서 눈에 띄기 시작해 6월~7월 블록타임에 눈에 띄게 기여하기 시작해 8월까지 블록을 견딜 수 없을 정도로 느리게(15~20초 읽기) 할 것으로 예상된다.그것의 진척은 여기서 추적되고 있다.
    • 클라이언트 개발자들이 블록타임이 너무 느려지기 전에 메인넷에 더메르지를 배치할 수 없다고 생각한다면, 그것은 다시 지연될 필요가 있을 것이다.폭탄을 지연시킬 수 있는 두 가지 방법이 있다.
      • Merge & Bomb delay: 만약 우리가 폭탄을 몇 주만 늦출 필요가 있다면, 우리는 The Merge에 대한 고객 출시와 폭탄 지연을 결합할 수 있다.이 방법이 효과가 있는 방법은 이 방출이 특정 블록에서 폭탄을 지연시켜 13초 블록을 복구한 다음 그 후에 더 병합이 활성화되는 것이다.병합은 클라이언트 출시와 상당히 가까운 곳에서 이루어져야 하기 때문에, 이 시나리오는 우리가 폭탄을 몇 주 늦추고 싶을 때에만 도움이 된다.
      • 별도 폭탄 지연: 블록 시간이 견딜 수 없을 정도로 느려지기 전에 이더리움 메인넷의 'Merge on the Etherom'을 활성화할 것으로 예상하지 않는다면, 'Merge' 전에 난이도 폭탄만 지연시키는 별도의 네트워크 업그레이드가 이루어져야 할 것이다.난이도 폭탄이 지연되는 시간은 합병의 발생 시기와 무관하다는 점에 유의하십시오.예를 들어, 만약 우리가 폭탄을 6개월 늦춘다면, 우리는 그 전에 합병할 수 있다.마찬가지로, 만약 우리가 폭탄을 3개월 지연시켰다가 다시 터지기 직전에 중대한 문제를 발견한다면, 또 다른 폭탄 지연이 고려될 것이다.
  • 어떻게 하면 합병을 더 빨리 할 수 있을까?
    • 인프라 제공자, 검증자 또는 취미 활동가로서 노드를 실행하는 경우, Killa에서 현재 설정을 테스트하여 예상대로 작동하는지 확인하십시오.많은 환경에서 소프트웨어를 사용해 보는 것은 우리가 그 과정에서 일찍 버그를 잡을 수 있는 최선의 방법이다.

인출

  • 어떻게 철수를 숨길 수 있을까?나는 몇 가지 스펙이 떠다니는 것을 보았지만, 그것에 대한 분명한 공감대가 있는 것은 아무것도 보이지 않는다.예금계약서를 보면 말 그대로 예금()이라는 한 가지 쓰기 방법이 있다.철수를 위한 논리가 전혀 없다.
    • 합병에서는 출금이 불가능하고, 나중에 갈림길에 서게 될 것이다.현재 사양: https://notes.ethereum.org/@ralexstokes/Skp1mPSB9
    • 인출은 계약서를 "통과"하지 않는다: 그들은 비콘 체인에 의해 다시 EL로 밀리고 현재 광부 보상과 같은 방식으로 신용을 받는다.이는 예금계약 잔액이 인출과 함께 '감소'되지 않기 때문에 순환공급이 다소 복잡해진다는 의미다.
  • 인출 키 작동 방식eth2-deposit-cli 기본값을 사용하면 BLS 철회 키를 자동으로 생성하지 않는다.이 열쇠는 어떻게 작동할까?파생 경로의 0번째 인덱스를 선택하시겠습니까?
    • EIP-234는 여기서 를 정의한다.
  • eth1 인출 키를 지정하면 해당 키의 주소로만 인출할 수 있는가?아니면 단순히 인출 거래에 서명하기 위해 사용하는 것인가, 그리고 당신이 어떤 특정한 주소로 인출할 수 있는 윤리?
    • 신호 체인에서 ETH를 인출하려면, ETH1 주소를 "대상" 수신자로 지정해야 한다.당신은 실행 계층의 관점에서 출금이 자동으로 이루어지기 때문에 이 계정으로부터 어떤 것도 서명할 필요가 없을 것이다.출금이 발생하면 대상 계정이 갑자기 출금이 포함된 블록 후 상태의 계좌 잔액에 ETH가 추가되는 것처럼 보이게 된다.
  • BLS 키를 사용하여 철수한다고 가정해 봅시다.나는 합의 계층이 상태나 계정을 갖지 않을 것이라고 이해한다.따라서 철회된 에트를 보낼 실행 계층 주소를 지정하시겠습니까?아니면 합의 계층이 실제로 상태를 가질 것인가?
    • 인출할 실행 계층 주소와 Gwei에서 인출할 금액을 지정하면 사양을 참조하십시오.확실히 하자면 BLS 인출 키로는 인출할 수 없다.우리는 합병 이후 갈림길에 서 있는 컨센서스 계층에 대한 당신의 자격 증명을 변경하는 수술을 받을 것이다.

샤딩

  • 샤딩이 앞으로 어떤 모습을 보일지 공감대가 형성돼 있는가.사형집행은 롤업 중심의 미래를 위해 완전히 포기된 것처럼 보인다.
    • 실행 샤딩은 롤업 중심의 실행 확장에 대해 "사용되지 않음"으로 간주되어 왔다.데이터 샤딩은 현재 연구되고 구현되고 있는 주요 접근방식이다.
  • 합병 후 롤업이 실제로 어떻게 작동하는가?여전히 ETH1 / 실행 계층의 맨 위에 앉아 있는가?아니면 직접 합의층 꼭대기에 앉을 것인가.
    • 그들은 현재와 같이 계속 일하고, 실행 계층에 배치되지만, 합의 계층의 최종성을 활용할 수 있다.
  • 데이터 샤딩은 현재 어디에 있는가?실제로 데이터 샤딩이란 무엇인가?롤업이 인기를 끌면서 데이터 가용성 문제를 해결하는 방법뿐인가?
    • 현재의 계획은 우선 EIP-4844에 명시된 새로운 거래 유형을 통해 노출되도록 하는 것이다. EIP-4844에는 FAQ가 있는 전체 웹사이트가 있다: https://www.eip4844.com/
    • 이것은 또한 별도의 p2p 계층에 샤딩의 완전한 구현을 위한 토대를 마련할 것이다.현재 제안된 완전 샤딩 모델은 여기에 설명되어 있다.
 

 

+ Recent posts