Stellar 지갑에서 결제(실시간) 듣기
Stellar 지갑에서 결제(실시간) 듣기
Stellar는 모든 통화 쌍 간의 국경 간 지불을 허용하는 저비용 송금에 대한 디지털 통화용 오픈 소스 분산 프로토콜입니다.
스텔라 지갑은 루멘 및 기타 자산을 디지털 통화로 보관하는 데 사용되는 디지털 지갑입니다. 그것은 공개 키와 비밀 키로 구성되며 조합하여 자금을 받고 보낼 수 있는 주소로 작동할 수 있습니다.
지갑으로 들어오는 최신 지불에 대한 알림을 받으려는 이유는 무엇입니까?
결제 옵션 중 하나로 스텔라를 활용하는 서비스가 있다고 가정해 보겠습니다. 송금 상태를 확인하려면 Horizon을 통해 자금을 받았는지 지속적으로 확인해야 합니다.
들어오는 지불에 대한 알림을 받을 수 있는 방법을 찾아야 합니다.
솔루션 1
API 요청을 사용하여 정기적으로 계정의 결제를 검색합니다. 다음 GET 요청을 사용하여 사용자는 account_id/public_key와 관련된 결제를 검색할 수 있습니다.
curl 요청 사용:
curl "https://horizon.stellar.org/accounts/<account_id>/payments?limit="
위의 curl 요청은 지정된 account_id에서 최신 결제를 받습니다.
예시 응답은 다음과 같습니다.
{
"_links": {
"self": {
"href": "https://horizon.stellar.org/accounts/GCNL55IJTH2HX26HLNIGYD2JIQLTBAQL3SVPNZA6PXK7NAVHU423WOTE/payments?cursor=\u0026limit=10\u0026order=desc"
},
"next": {
"href": "https://horizon.stellar.org/accounts/GCNL55IJTH2HX26HLNIGYD2JIQLTBAQL3SVPNZA6PXK7NAVHU423WOTE/payments?cursor=110694007436259329\u0026limit=10\u0026order=desc"
},
"prev": {
"href": "https://horizon.stellar.org/accounts/GCNL55IJTH2HX26HLNIGYD2JIQLTBAQL3SVPNZA6PXK7NAVHU423WOTE/payments?cursor=119400713599217665\u0026limit=10\u0026order=asc"
}
},
"_embedded": {
"records": [
{
"_links": {
"self": {
"href": "https://horizon.stellar.org/operations/119400713599217665"
},
"transaction": {
"href": "https://horizon.stellar.org/transactions/b9d7c534b5fa168570a5bffe0f2089de150d00bf8cbd19ec93e897c565958f3f"
},
"effects": {
"href": "https://horizon.stellar.org/operations/119400713599217665/effects"
},
"succeeds": {
"href": "https://horizon.stellar.org/effects?order=desc\u0026cursor=119400713599217665"
},
"precedes": {
"href": "https://horizon.stellar.org/effects?order=asc\u0026cursor=119400713599217665"
}
},
"id": "119400713599217665",
"paging_token": "119400713599217665",
"transaction_successful": true,
"source_account": "GCNL55IJTH2HX26HLNIGYD2JIQLTBAQL3SVPNZA6PXK7NAVHU423WOTE",
"type": "payment",
"type_i": 1,
"created_at": "2020-01-17T20:32:38Z",
"transaction_hash": "b9d7c534b5fa168570a5bffe0f2089de150d00bf8cbd19ec93e897c565958f3f",
"asset_type": "credit_alphanum4",
"asset_code": "USD",
"asset_issuer": "GDUKMGUGDZQK6YHYA5Z6AY2G4XDSZPSZ3SW5UN3ARVMO6QSRDWP5YLEX",
"from": "GCNL55IJTH2HX26HLNIGYD2JIQLTBAQL3SVPNZA6PXK7NAVHU423WOTE",
"to": "GASWJWFRYE55KC7MGANZMMRBK5NPXT3HMPDQ6SEXZN6ZPWYXVVYBFRTE",
"amount": "84.9410878"
},
{
"_links": {
"self": {
"href": "https://horizon.stellar.org/operations/117356420835532801"
},
"transaction": {
"href": "https://horizon.stellar.org/transactions/c25dd84798076ee8ea126c78407d61c7e8f3efdf8739274f56b07a7029500b00"
},
"effects": {
"href": "https://horizon.stellar.org/operations/117356420835532801/effects"
},
"succeeds": {
"href": "https://horizon.stellar.org/effects?order=desc\u0026cursor=117356420835532801"
},
"precedes": {
"href": "https://horizon.stellar.org/effects?order=asc\u0026cursor=117356420835532801"
}
},
"id": "117356420835532801",
"paging_token": "117356420835532801",
"transaction_successful": true,
"source_account": "GDV4KECLSZLKRVH4ZTWVAS4I3W2LPAPV66ADFFUZKGIVOTK6GMKGJT53",
"type": "payment",
"type_i": 1,
"created_at": "2019-12-18T08:23:35Z",
"transaction_hash": "c25dd84798076ee8ea126c78407d61c7e8f3efdf8739274f56b07a7029500b00",
"asset_type": "native",
"from": "GDV4KECLSZLKRVH4ZTWVAS4I3W2LPAPV66ADFFUZKGIVOTK6GMKGJT53",
"to": "GCNL55IJTH2HX26HLNIGYD2JIQLTBAQL3SVPNZA6PXK7NAVHU423WOTE",
"amount": "355.3887598"
},
{
"_links": {
"self": {
"href": "https://horizon.stellar.org/operations/115354197276323841"
},
"transaction": {
"href": "https://horizon.stellar.org/transactions/c09d4cee993d60d73c80f036666966738a26b8f3b25d7275b93fd995505b5e5b"
},
"effects": {
"href": "https://horizon.stellar.org/operations/115354197276323841/effects"
},
"succeeds": {
"href": "https://horizon.stellar.org/effects?order=desc\u0026cursor=115354197276323841"
},
"precedes": {
"href": "https://horizon.stellar.org/effects?order=asc\u0026cursor=115354197276323841"
}
},
"id": "115354197276323841",
"paging_token": "115354197276323841",
"transaction_successful": true,
"source_account": "GDV4KECLSZLKRVH4ZTWVAS4I3W2LPAPV66ADFFUZKGIVOTK6GMKGJT53",
"type": "payment",
"type_i": 1,
"created_at": "2019-11-18T19:59:40Z",
"transaction_hash": "c09d4cee993d60d73c80f036666966738a26b8f3b25d7275b93fd995505b5e5b",
"asset_type": "native",
"from": "GDV4KECLSZLKRVH4ZTWVAS4I3W2LPAPV66ADFFUZKGIVOTK6GMKGJT53",
"to": "GCNL55IJTH2HX26HLNIGYD2JIQLTBAQL3SVPNZA6PXK7NAVHU423WOTE",
"amount": "688.4065454"
}
]
}
}
이 접근 방식의 단점은 다음과 같습니다.
curl "https://horizon.stellar.org/accounts/<account_id>/payments?limit="
{
"_links": {
"self": {
"href": "https://horizon.stellar.org/accounts/GCNL55IJTH2HX26HLNIGYD2JIQLTBAQL3SVPNZA6PXK7NAVHU423WOTE/payments?cursor=\u0026limit=10\u0026order=desc"
},
"next": {
"href": "https://horizon.stellar.org/accounts/GCNL55IJTH2HX26HLNIGYD2JIQLTBAQL3SVPNZA6PXK7NAVHU423WOTE/payments?cursor=110694007436259329\u0026limit=10\u0026order=desc"
},
"prev": {
"href": "https://horizon.stellar.org/accounts/GCNL55IJTH2HX26HLNIGYD2JIQLTBAQL3SVPNZA6PXK7NAVHU423WOTE/payments?cursor=119400713599217665\u0026limit=10\u0026order=asc"
}
},
"_embedded": {
"records": [
{
"_links": {
"self": {
"href": "https://horizon.stellar.org/operations/119400713599217665"
},
"transaction": {
"href": "https://horizon.stellar.org/transactions/b9d7c534b5fa168570a5bffe0f2089de150d00bf8cbd19ec93e897c565958f3f"
},
"effects": {
"href": "https://horizon.stellar.org/operations/119400713599217665/effects"
},
"succeeds": {
"href": "https://horizon.stellar.org/effects?order=desc\u0026cursor=119400713599217665"
},
"precedes": {
"href": "https://horizon.stellar.org/effects?order=asc\u0026cursor=119400713599217665"
}
},
"id": "119400713599217665",
"paging_token": "119400713599217665",
"transaction_successful": true,
"source_account": "GCNL55IJTH2HX26HLNIGYD2JIQLTBAQL3SVPNZA6PXK7NAVHU423WOTE",
"type": "payment",
"type_i": 1,
"created_at": "2020-01-17T20:32:38Z",
"transaction_hash": "b9d7c534b5fa168570a5bffe0f2089de150d00bf8cbd19ec93e897c565958f3f",
"asset_type": "credit_alphanum4",
"asset_code": "USD",
"asset_issuer": "GDUKMGUGDZQK6YHYA5Z6AY2G4XDSZPSZ3SW5UN3ARVMO6QSRDWP5YLEX",
"from": "GCNL55IJTH2HX26HLNIGYD2JIQLTBAQL3SVPNZA6PXK7NAVHU423WOTE",
"to": "GASWJWFRYE55KC7MGANZMMRBK5NPXT3HMPDQ6SEXZN6ZPWYXVVYBFRTE",
"amount": "84.9410878"
},
{
"_links": {
"self": {
"href": "https://horizon.stellar.org/operations/117356420835532801"
},
"transaction": {
"href": "https://horizon.stellar.org/transactions/c25dd84798076ee8ea126c78407d61c7e8f3efdf8739274f56b07a7029500b00"
},
"effects": {
"href": "https://horizon.stellar.org/operations/117356420835532801/effects"
},
"succeeds": {
"href": "https://horizon.stellar.org/effects?order=desc\u0026cursor=117356420835532801"
},
"precedes": {
"href": "https://horizon.stellar.org/effects?order=asc\u0026cursor=117356420835532801"
}
},
"id": "117356420835532801",
"paging_token": "117356420835532801",
"transaction_successful": true,
"source_account": "GDV4KECLSZLKRVH4ZTWVAS4I3W2LPAPV66ADFFUZKGIVOTK6GMKGJT53",
"type": "payment",
"type_i": 1,
"created_at": "2019-12-18T08:23:35Z",
"transaction_hash": "c25dd84798076ee8ea126c78407d61c7e8f3efdf8739274f56b07a7029500b00",
"asset_type": "native",
"from": "GDV4KECLSZLKRVH4ZTWVAS4I3W2LPAPV66ADFFUZKGIVOTK6GMKGJT53",
"to": "GCNL55IJTH2HX26HLNIGYD2JIQLTBAQL3SVPNZA6PXK7NAVHU423WOTE",
"amount": "355.3887598"
},
{
"_links": {
"self": {
"href": "https://horizon.stellar.org/operations/115354197276323841"
},
"transaction": {
"href": "https://horizon.stellar.org/transactions/c09d4cee993d60d73c80f036666966738a26b8f3b25d7275b93fd995505b5e5b"
},
"effects": {
"href": "https://horizon.stellar.org/operations/115354197276323841/effects"
},
"succeeds": {
"href": "https://horizon.stellar.org/effects?order=desc\u0026cursor=115354197276323841"
},
"precedes": {
"href": "https://horizon.stellar.org/effects?order=asc\u0026cursor=115354197276323841"
}
},
"id": "115354197276323841",
"paging_token": "115354197276323841",
"transaction_successful": true,
"source_account": "GDV4KECLSZLKRVH4ZTWVAS4I3W2LPAPV66ADFFUZKGIVOTK6GMKGJT53",
"type": "payment",
"type_i": 1,
"created_at": "2019-11-18T19:59:40Z",
"transaction_hash": "c09d4cee993d60d73c80f036666966738a26b8f3b25d7275b93fd995505b5e5b",
"asset_type": "native",
"from": "GDV4KECLSZLKRVH4ZTWVAS4I3W2LPAPV66ADFFUZKGIVOTK6GMKGJT53",
"to": "GCNL55IJTH2HX26HLNIGYD2JIQLTBAQL3SVPNZA6PXK7NAVHU423WOTE",
"amount": "688.4065454"
}
]
}
}
솔루션 2
기사의 제목에서 알 수 있듯이 두 번째 솔루션은 트랜잭션이 발생하는 대로 청취하는 것입니다. 이를 실현하기 위해 우리는 사용자 계정에 관한 최신 결제 정보를 수신하기 위해 구독할 수 있는 이벤트 스트림을 제공하는 Stellar SDK를 활용합니다.
다음은 이 솔루션을 구현하는 방법입니다.
먼저 다음 명령을 사용하여 필요한 stellar-sdk 종속성을 프로젝트에 설치합니다.
yarn add stellar-sdk
두 번째로 require 키워드를 사용하여 stellar-sdk를 가져옵니다. 그런 다음 사용하기 전에 Horizon URL을 사용하여 서버 SDK를 초기화합니다.
var StellarSdk = require("stellar-sdk");
var server = new StellarSdk.Server("https://horizon.stellar.org");
server
.payments()
.cursor('now')
.stream({
onmessage: (payment)=>{},
onerror: (error)=>{}
})
이벤트 스트림에서 오는 예제 결과는 다음과 같습니다.
{
"_links": {
"self": {
"href": "https://horizon.stellar.org/operations/115354197276323841"
},
"transaction": {
"href": "https://horizon.stellar.org/transactions/c09d4cee993d60d73c80f036666966738a26b8f3b25d7275b93fd995505b5e5b"
},
"effects": {
"href": "https://horizon.stellar.org/operations/115354197276323841/effects"
},
"succeeds": {
"href": "https://horizon.stellar.org/effects?order=desc\u0026cursor=115354197276323841"
},
"precedes": {
"href": "https://horizon.stellar.org/effects?order=asc\u0026cursor=115354197276323841"
}
},
"id": "115354197276323841",
"paging_token": "115354197276323841",
"transaction_successful": true,
"source_account": "GDV4KECLSZLKRVH4ZTWVAS4I3W2LPAPV66ADFFUZKGIVOTK6GMKGJT53",
"type": "payment",
"type_i": 1,
"created_at": "2019-11-18T19:59:40Z",
"transaction_hash": "c09d4cee993d60d73c80f036666966738a26b8f3b25d7275b93fd995505b5e5b",
"asset_type": "native",
"from": "GDV4KECLSZLKRVH4ZTWVAS4I3W2LPAPV66ADFFUZKGIVOTK6GMKGJT53",
"to": "GCNL55IJTH2HX26HLNIGYD2JIQLTBAQL3SVPNZA6PXK7NAVHU423WOTE",
"amount": "688.4065454"
}
이 접근법의 장점:
추가 리소스
Stellar Documentation
Reference
이 문제에 관하여(Stellar 지갑에서 결제(실시간) 듣기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/clickpesa/listening-to-payments-real-time-on-your-stellar-wallet-1p0n텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)