DB MSSQL 데드락(교착상태) 해결방법

마지막 업데이트: 2022년 7월 6일 | 0개 댓글
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기

트랜잭션 내에서 데이터 레이크에서 읽기 및 쓰기

AWS Lake Formation는 Amazon S3 객체로 구성된 관리 테이블을 읽고 쓸 때, 그리고 데이터 카탈로그에서 테이블 메타데이터를 생성 및 업데이트할 때, 그리고 일관성, 격리 및 내구성 (ACID) 트랜잭션을 지원합니다. 트랜잭션은 관리되는 테이블 매니페스트의 무결성을 유지합니다 (트랜잭션 데이터 작업) 및 기타 테이블 메타데이터 (예: 스키마 (트랜잭션 메타데이터 작업). 다음은 관리되는 테이블에 대한 트랜잭션에 대한 일반적인 사용 사례입니다.

ETL을 새 테이블로 — 이 사용 사례에서AWS Glue트랜잭션을 시작하고, 데이터 원본에서 읽고, 데이터 레이크에 등록된 Amazon S3 위치인 데이터 싱크에 쓰고, 데이터 싱크에 대해 데이터 카탈로그에 관리되는 테이블을 생성하는 ETL (추출, 변환 및 로드) 작업 ETL 스크립트가 어느 시점에서 실패를 감지하면 스크립트가 트랜잭션을 취소할 수 있으므로 다음과 같은 결과가 발생합니다.

관리되는 테이블이 카탈로그에서 삭제됩니다.

스크립트가 Lake Formation 포메이션을 호출하는 경우 DeleteObjectsOnCancel 각 새 객체가 Amazon S3 작성되기 전에 API 작업을 수행하면 Lake Formation Formation은 트랜잭션 내에서 Amazon S3 작성된 모든 객체도 삭제합니다. 자세한 정보는 Amazon S3 쓰기 롤백을 참조하십시오.

테이블 업데이트 — 기존의 관리되는 테이블의 경우 ETL 작업이 트랜잭션을 시작하고 Amazon S3 새 객체를 기록한 다음 UpdateTableObjects API 연산. 스크립트가 실패를 감지하면 트랜잭션을 취소할 수 있으므로 다음과 같은 결과가 발생합니다.

테이블 매니페스트는 트랜잭션이 시작되기 전의 상태로 복원됩니다.

스크립트가 Lake Formation 포메이션을 호출하는 경우 DeleteObjectsOnCancel 각 새 객체가 Amazon S3 작성되기 전에 API 작업을 수행하면 Lake Formation 포메이션은 트랜잭션 내에서 Amazon S3 작성된 모든 객체도 삭제합니다.

스키마 업데이트 — Amazon S3 스트리밍 데이터 싱크가 있는 기존 관리 테이블의 경우 스트리밍 ETL 작업에서 데이터에 추가 테이블 열이 DB MSSQL 데드락(교착상태) 해결방법 있다고 판단하면 트랜잭션 내의 테이블 스키마를 업데이트할 수 있습니다. 오류가 발생하면 작업에서 트랜잭션을 취소할 수 있으며, 이 경우 테이블 스키마는 트랜잭션이 시작되기 전의 상태로 복원됩니다.

시간 이동 쿼리 — Lake Formation 포메이션은 여러 버전을 유지합니다 (스냅숏) 데이터 레이크의 데이터가 변경될 때 테이블 메타데이터입니다. 스키마가 변경된 경우에도 시간을 거슬러 이동하고 데이터를 쿼리할 수 있습니다.

제어 테이블에 대한 자세한 내용은 단원을 참조하십시오.Lake Formation 포메이션의 관리 테이블.

주제

관리 테이블의 커밋 프로세스

관리되는 테이블에 대한 수정은 트랜잭션 컨텍스트 내에서 이루어져야 합니다. ETL 작업이 트랜잭션 ID를 명시적으로 제공하지 않고 관리되는 테이블에서 작업을 수행하는 경우 Lake Formation은 자동으로 트랜잭션을 시작하고 작업이 끝날 때 트랜잭션을 커밋 (또는 취소) 합니다. 이를 단일 명령문 트랜잭션이라고 합니다.

쓰기 작업이 있는 트랜잭션의 경우 CommitTransaction 트랜잭션을 다음으로 이동합니다. COMMIT_IN_PROGRESS 상태입니다. 내부 백그라운드 프로세스는 트랜잭션을 다음으로 이동하기 전에 트랜잭션의 변경 사항을 관리 테이블에 적용하는 작업을 수행합니다. COMMITTED 상태입니다. 따라서 호출 직후 읽기 작업이 수행됩니다. CommitTransaction 이 (가) 쓰기 작업의 결과를 반영하거나 반영하지 않을 수 있습니다. 쓰기 작업의 결과를 결정적으로 읽으려면 트랜잭션 상태가 다음과 같이 변경될 때까지 기다려야 합니다. COMMITTED . 두 호출을 통해 확인할 수 있습니다. CommitTransaction 또는 DescribeTransaction API 연산. 단일 문 트랜잭션에 대한 읽기 작업도 동일한 동작을 보여줍니다.

Amazon S3 쓰기 롤백

트랜잭션이 취소된 경우, 자동 또는 에 대한 호출을 통해트랜잭션 취소, Lake Formation Formation은 사용자의 허가 없이 Amazon S3 기록된 데이터를 삭제하지 않습니다. 트랜잭션 중에 작성된 쓰기를 롤백할 수 있는 Lake Formation Formation에 권한을 부여하려면 코드가객체 삭제취소 API 작업트랜잭션이 취소된 경우 삭제할 수 있는 Amazon S3 객체를 나열합니다. 전화하는 것이 좋습니다. DeleteObjectsOnCancel 쓰기 전에.

이AWS GlueETL 라이브러리 함수 write_dynamic_frame.from_catalog() 자동으로 호출하는 옵션이 포함되어 있습니다. DeleteObjectsOnCancel 쓰기 전에. 다음 예제에서 callDeleteObjectsOnCancel 옵션이 에 포함되어 있습니다. additional_options 인수. 왜냐하면 그 가치 False 에 전달됩니다. read_only 의 인수 start_transaction 트랜잭션은 읽기 전용 트랜잭션이 아닙니다.

트랜잭션 프로세서

데이터베이스를 운영하여보면 "트랜잭션(프로세스 ID 57)이 잠금 리소스에서 다른 프로세스와의 교착 상태가 발생하여 실행이 중지되었습니다". 트랜잭션을 다시 실행하십시오." 와 같은 에러가 발생하는 경우가 DB MSSQL 데드락(교착상태) 해결방법 있습니다.

1. 데드락 발생원인 (교착상태에 빠지는이유)

아래 그림과 같이 트랜잭션 1 이 Table1 을 업데이트후 Table2 를 업데이트 하려고 할때, 트랜잭션 2 가 이미 Table2 에 업데이트 작업을 진행중인 경우 해당작업을 완료할 때까지 대기후 처리합니다. 트랜잭션 2 가 Table2업데이트 완료후 Table1 을 업데이트 하려고 할때 트랜잭션 1 이 Table1 의 작업을 하고 있어서 완료 될때까지 대기한다 . 이렇게 두개의 트랜잭션작업이 서로 완료 될때까지 기다리게되며 결과적으로 아무것도 완료가 되지 않는 상태가됩니다.이렇게 해서 교착상태가 빠지게 됩니다.

실제로 데이터베이스상에서 데드락을 발생시켜보겠습니다. 강제로 waitfor delay를 사용하여 update구간에 5초 대기를 시켜보면 아래와 같이 교착상태가 발생하는것을 알수있습니다.

2. 해결방법(데드락 최소화하기)
1) 트랜잭션 진행방향을 같은방향으로 처리
트랜잭션1 : Table1 업데이트 후 Table2업데이트 , 트랜잭션2 : Table1업데이트 후 Table2업데이트로처리하게되면 업데이트시 begintran로 인하여 블록킹이 될수는 있으나 데드락이 발생할 확률이 줄어지게됩니다.
2)트랜잭션 처리속도를 최소화
update문이 빨리 처리되었으면 데드락이 발생할 확률이 줄어듭니다. 당연한 애기지만 이미 트랜잭션속도가 빨라commit처리가 되면 다른트랜잭션에서 테이블이 잠길일이 없습니다.
3) SET LOCK_TIMEOUT문을 이용하여 잠금해제 시간을 조절
데드락이 발생했을때 잠금 시간을 해제해주면 무기한 대기하지 않고 만료가 되어 다음작업을 진행할수 있습니다. 단위는 밀리세컨드입니다. LOCK_TIMEOUT값을 10초로 설정해보겠습니다. -1(기본값)은 제한시간없이 무기한대기를 나타냅니다.

트랜잭션 프로세서

한 작업에서 잠근 리소스를 다른 작업에서 잠그려고 하여 둘 이상의 태스크가 서로 영구적으로 차단하면 교착 상태가 발생합니다. 예를 들면 다음과 같습니다.

트랜잭션 A가 1행에 대한 공유 잠금을 획득합니다.

트랜잭션 B가 2행에 대한 공유 잠금을 획득합니다.

트랜잭션 A가 2행에 대한 배타적 잠금을 요청하고 트랜잭션 B가 2행에 대해 소유하고 있는 공유 잠금을 종료 및 해제할 때까지 트랜잭션 A가 차단됩니다.

트랜잭션 B가 1행에 대한 배타적 잠금을 요청하고 트랜잭션 A가 1행에 대해 소유하고 있는 공유 잠금을 종료 및 해제할 때까지 트랜잭션 B가 차단됩니다.

트랜잭션 B가 완료되어야 트랜잭션 A도 완료될 수 있지만 트랜잭션 B는 트랜잭션 A에 의해 차단된 상태입니다. 이러한 상태를 순환 종속 관계라고 합니다. 트랜잭션 A는 트랜잭션 B에 종속되고 트랜잭션 B는 트랜잭션 A에 종속된 형태로 순환됩니다.

교착 상태의 트랜잭션은 둘 다 외부 프로세스에서 교착 상태를 해제할 때까지 기다립니다. MicrosoftSQL Server 데이터베이스 엔진 교착 상태 모니터는 교착 상태에 있는 태스크가 있는지 주기적으로 검사합니다. 순환 종속 관계가 발견되면 모니터는 두 작업 중 처리하지 않을 태스크를 하나 선택하고 해당 트랜잭션을 오류와 함께 종료합니다. 이렇게 하여 다른 태스크가 해당 트랜잭션을 완료할 수 있습니다. 오류와 함께 종료된 트랜잭션의 응용 프로그램은 해당 DB MSSQL 데드락(교착상태) 해결방법 트랜잭션을 다시 시도하며 이 트랜잭션은 대개 교착 상태의 다른 트랜잭션이 완료된 후에 끝납니다.

응용 프로그램에 특정 코딩 규칙을 사용하여 응용 프로그램에서 교착 상태를 일으킬 가능성을 줄일 수 있습니다. 자세한 내용은 교착 상태 최소화를 참조하십시오.

교착 상태는 종종 일반적인 차단과 혼동됩니다. 트랜잭션이 다른 트랜잭션에서 잠근 리소스에 대한 잠금을 요청하면 잠금이 해제될 때까지 잠금을 요청한 트랜잭션이 기다립니다. 기본적으로 LOCK_TIMEOUT이 설정되지 않은 한 SQL Server 트랜잭션 시간은 제한되지 않습니다. 잠금을 요청하는 트랜잭션은 잠금을 소유하는 트랜잭션을 차단하기 위한 작업을 수행하지 않으므로 교착 상태에 빠지지 않고 차단됩니다. 결국 잠금을 소유하는 트랜잭션이 완료되고 잠금을 해제하면 잠금을 요청하는 트랜잭션에 잠금이 허가되고 트랜잭션이 진행됩니다.

교착 상태는 deadly embrace(치명적인 포옹)라고도 합니다.

교착 상태는 관계형 데이터베이스 관리 시스템뿐만 아니라 다중 스레드를 사용하는 어느 시스템에서나 발생할 수 있으며 데이터베이스 개체에 대한 잠금 이외의 리소스에 대해 발생할 수 있습니다. 예를 들어 다중 스레드 운영 체제의 스레드는 메모리 블록과 같은 하나 이상의 리소스를 획득할 수 있습니다. 획득하려는 리소스를 현재 다른 스레드가 소유하고 있으면 대상 리소스가 해제될 때까지 첫 번째 스레드가 기다려야 할 수 있습니다. 이렇게 대기 중인 스레드는 해당 리소스에 대해 리소스를 소유하는 스레드에 종속됩니다. 데이터베이스 엔진의 인스턴스에서 세션은 메모리나 스레드 등의 데이터베이스가 아닌 리소스를 획득할 때 교착 상태에 빠질 수 있습니다.

이 그림에서 트랜잭션 T1은 Part 테이블 잠금 리소스에 대해 트랜잭션 T2에 종속됩니다. 마찬가지로 스레드 T2는 Supplier 테이블 잠금 리소스에 대해 트랜잭션 T1에 종속됩니다. 이러한 종속 관계는 순환적이므로 스레드 T1과 T2 간에 교착 상태가 발생합니다.

테이블이 분할되고 ALTER TABLE의 LOCK_ESCALATION 설정이 AUTO로 설정된 경우에도 교착 상태가 발생할 수 있습니다. LOCK_ESCALATION이 AUTO로 설정되면 데이터베이스 엔진에서 TABLE 수준이 아니라 HoBT 수준에서 테이블 파티션을 잠그도록 허용하여 동시성이 증가합니다. 그러나 개별 트랜잭션이 테이블에 파티션 잠금을 보유하고 다른 트랜잭션 파티션에서 잠금을 원하면 교착 상태가 발생합니다. 이런 유형의 교착 상태는 LOCK_ESCALATION을 TABLE로 설정하면 방지할 수 있습니다. 하지만 이 설정으로 인해 테이블 잠금을 기다리도록 파티션에 대규모 업데이트가 강제 적용되어 동시성이 감소됩니다.

위 내용은 MSDN에서 참조한 내용이다.

하나의 테이블에 여러 트랜잭선에서 동시다발적으로 UPDATE/DELETE 등을 실행할 경우 교착상태( DEADLOCK)이 발생한다.
보통 이런경우 아래와 같은 에러메세지가 출력한다.

SqlException:System.Data.SqlClient.SqlException (0x80131904): 트랜잭션(프로세스 ID 95)이 잠금 리소스에서 다른 프로세스와의 교착 상태가 발생하여 실행이 중지되었습니다. 트랜잭션을 다시 실행하십시오.

이런 증상을 최소화 하기 위해서는 몇가지 방법이 있다.

1. 인덱스를 설정한다. 인덱스가 없는 경우 DEADLOCK 이 발생할 확률이 넓어진다.
2. 트랜젝션을 가급적 짧고 단순하게 만든다.
3. Transaction Isolation Level 을 "Read UnCommitted"로 설정한다.
4. LOCK_ESCALATION 을 "Disable", ALLOW_PAGE_LOCKS 를 "OFF"로 설정한다.

위의 4가지 항목들을 모두 설정해야 오류가 발생하지 않는것 같다.

▷ Isolation Level 설정 방법

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

쿼리문 상단에 위 설정구분을 넣어두면 된다.

▷ LOCK_ESCALATION 설정 방법

ALTER TABLE dbo.tb_ExTable SET ( LOCK_ESCALATION = DISABLE )

LOCK_ESCALATION 은 AUTO, TABLE, DISABLE 로 설정할 수 있다.(기본값 TABLE)
설정된 LOCK_ESCALATION 값을 보고 싶은경우 아래와 같은 쿼리를 실행하면 된다.

SELECT lock_escalation , lock_escalation_desc FROM sys.tables WHERE name IN ( 'tb_ExTable' )

▷ ALLOW_PAGE_LOCKS 설정 방법

EXEC SP_INDEXOPTION tb_ExTable , DISALLOWPAGELOCKS , 1;

ALLOW_PAGE_LOCKS 는 테이블 생성할 때 WITH 문에 "ALLOW_PAGE_LOCKS = OFF"를 추가 하거나
위와 같이 테이블 생성 이후 DISALLOWPAGELOCKS 를 "1"로 설정하여 값을 변경할 수 있다.
설정된 ALLOW_PAGE_LOCKS 값을 보고 싶은 경우 아래와 같은 쿼리를 실행하면 된다.

SELECT ALLOW_PAGE_LOCKS FROM sys.indexes
WHERE OBJECT_ID IN ( OBJECT_ID ( 'tb_ExTable' ))

위 항목들을 모두 설정하였는데도 에러가 발생한다면;;;;
다른 방법을 찾아보기 바란다.
SP 또는 해당 Update/Delete 작업을 최소한으로 수정하여 처리하는 방법밖에 없을것 같다.

NFT 발행 프로세스에서 트랜잭션 종결성과 속도가 중요한 이유

대체 불가능 토큰(Non-fungible token, "NFT")은 얼마간 고유 자산으로 존재하면서 새로운 디지털 경제에서 중요한 역할을 했습니다. 그러나 지난 몇 개월 동안 폭발적인 인기를 얻으면서 주류로 도입되기 시작했습니다. 잠재력을 발휘하고자 하는 아티스트와 크리에이터뿐만 아니라 수많은 기업과 조직에서도 NFT를 구현하여 디지털 또는 실물 자산의 고유성(및 이로 이한 희귀성)을 나타내고 소유권 증명과 전송 가능성을 확보하고자 합니다.

NFT의 장점은 다양하지만, 기업이 고려해야 할 가장 중요한 기능으로는 NFT가 상주하는 블록체인 네트워크와 관련된 트랜잭션의 종결성과 속도를 꼽을 수 있습니다.

개별 NFT를 발행할 때는 속도와 종결성이 그다지 중요하지 않을 수 있습니다. 그러나 라이선스, 인증서, 권한이나 실물 객체를 나타내는 수천 개, 수백만 개 수준의 NFT를 발행할 때는 이러한 요소가 반드시 필요합니다.

NFT를 지원하는 블록체인 중 가장 속도가 빠른 것으로 꼽히는 것이 바로 알고랜드입니다. 알고랜드에서는 모든 트랜잭션이 즉시 최종 상태로 확정되며, 네트워크는 초당 수천 건의 트랜잭션을 처리할 수 있습니다. 또한 탁월한 처리 속도를 달성하기 위해 네트워크 분산화 수준을 희생하지 않습니다.

트랜잭션 종결성(Transaction Finality)이란? 알고랜드에서 트랜잭션 종결성을 달성하는 방법은?

트랜잭션 종결성은 블록체인의 가장 중요한 기능으로 꼽히며, NFT에 큰 변화를 가져올 수 있습니다. 특히 대규모의 NFT를 한꺼번에 발행하거나 거래하는 경우에 더욱 중요합니다.

트랜잭션 종결성이란 블록체인 내 트랜잭션을 최종 상태로 확정하고 되돌릴 수 없는 상태라고 간주할 수 있도록 하는 프로세스를 DB MSSQL 데드락(교착상태) 해결방법 말합니다.

트랜잭션이 최종 상태로 확정되면 롤백이 불가능하며, 커뮤니티는 트랜잭션을 영구적이고 불변하는 트랜잭션으로 신뢰할 수 있습니다. 이 기능이 없으면 모든 블록체인 트랜잭션이 이론적으로 롤백, 변경 또는 취소될 수 있으므로 안전하지 않고, 그 결과 블록체인을 신뢰할 수 없게 됩니다. 트랜잭션 종결성이 중요한 이유도 바로 여기에 있습니다.

트랜잭션 종결성은 블록체인을 통해 수행되는 트랜잭션이 롤백되지 않는 상태로 확정되기까지 걸리는 시간을 측정하는 데 사용됩니다. 이러한 측정값은 블록체인마다 다르며, NFT 발행자는 네트워크를 선택할 때 이를 고려해야 합니다.

일부 블록체인은 즉각적으로 트랜잭션을 종결하지 못하며 이로 인해 프로세스가 번거로워집니다. 예를 들어, 물건을 살 때마다 10분씩 기다려야 한다면 아무리 쇼핑 중독자라고 할지라도 쇼핑을 포기할 것입니다. 이러한 지연 시간은 NFT 프로세스를 대량 도입하는 데 걸림돌로 작용합니다.

종결 속도가 가장 느린 예시로 비트코인을 생각해볼 수 있습니다. 일반적으로 작업증명(PoW) 블록체인은 마이크로 포크를 자주 사용하며, 네트워크는 지속적으로 단일 체인으로 복구되려고 합니다. 이러한 마이크로 포크가 발생한 동안 일부 노드는 블록 A를 유효한 다음 블록으로 간주하는 반면, 다른 노드는 블록 B를 채택합니다. 잠깐이지만 두 개의 병렬 DB MSSQL 데드락(교착상태) 해결방법 체인을 사용하는 상태가 몇 블록 동안 이어질 수 있습니다.

PoW 네트워크에서는 트랜잭션이 수행되고 최신 블록에 추가되더라도 곧바로 이것이 최종 트랜잭션이라고 볼 DB MSSQL 데드락(교착상태) 해결방법 수 없습니다. 마이크로 포크로 인해 생겨난 분기 체인이 현재 체인을 극복할 수 있으며 블록이 완전히 사라질 수 있기 때문입니다. 따라서 트랜잭션이 최종적으로 확정되고 버려질 분기 체인에 도달하지 않도록 하려면 일련의 블록이 종결되기를 기다려야 합니다. 비트코인의 평균 블록 생성 시간은 10분이지만, 트랜잭션이 불가역적으로 종결되었는지 확인하려면 최소 1시간 이상 기다려야 합니다.

일부 PoW 블록체인은 NFT를 지원합니다만, 기업에서는 지연 시간이 너무 길다는 단점 탓에 이를 대규모로 도입하지 않습니다. 따라서 NFT 개발 시 사용할 블록체인을 생각할 때 블록체인 트랜잭션 처리 성능과 트랜잭션 종결 시간을 매우 중요한 요소로 고려하셔야 합니다.

알고랜드는 MIT 교수인 실비오 미칼리(Silvio Micali)가 발명한 순수 지분증명(PPoS)를 통해 가장 신속하게 트랜잭션을 종결할 수 있습니다. 컨센서스 메커니즘은 전혀 포크하지 않으며, 따라서 마이크로 포크의 위험을 전혀 없는 수준으로 절감합니다. 알고랜드의 블록 생성 시간은 5초 이내이며 모든 트랜잭션은 즉시 종결됩니다.

Algorand Block Stats (5/10/21 snapshot) from metrics.algorand.org*

지연 시간이 짧고 트랜잭션 비용이 저렴하며 친환경적인 알고랜드는 NFT 발행 및 거래에 적합한 인프라를 제공합니다.

알고랜드는 신속하고 안전합니다

즉각적인 트랜잭션 종결에 더불어 알고랜드는 시중의 블록체인 중 가장 신속하고 처리 성능이 뛰어납니다. 네트워크는 매초 수만 건의 트랜잭션을 처리할 수 있으며, 이러한 트랜잭션 모두가 몇 초만에 최종 상태로 확정됩니다.

Algorand Transaction Stats (5/10/21 snapshot) from metrics.algorand.org*

이를 통해 NFT는 암호화된 예술과 게임을 넘어서 수많은 사용 사례를 지원할 수 있습니다.

NFT가 유망한 이유는 라이선스, 인증, 부동산 소유권, 사치품 등 실제 자산을 토큰화하는 데 사용할 수 있기 때문입니다. 이미 독보적인 활용 사례가 몇 가지 등장했으나, 기업들은 NFT 발행/거래와 관련하여 신속한 속도와 즉각적인 종결성에 관심을 보입니다.

예를 들어, 명품을 생산하고 판매하는 회사는 제품의 진품 여부를 증명하기 위해 NFT를 사용할 수 있습니다. 이를 위해 명품회사는 수십만 개에 이르는 NFT를 발행해야 할 것입니다. NFT 한 개를 발행할 때마다 몇 분씩 기다릴 수는 없겠죠.

알고랜드에서는 몇 시간이면 수백 개의 NFT를 발행 가능합니다

2021년 3월, 이탈리아 최대 규모의 저작권 관리 단체인 이탈리아작가출판사협회(Società Italiana degli Autori ed Editori, "DB MSSQL 데드락(교착상태) 해결방법 SIAE")는 알고랜드를 사용해 창작자의 권리를 나타내는 NFT를 발행했습니다. SIAE는 몇 시간만에 95,000명 이상의 회원이 보유한 권리 450건 이상을 몇 시간만에 토큰화할 수 있었습니다. SIAE가 NFT 발행용으로 다른 유명 블록체인을 선택했다면 아마 며칠은 기다려야 했을 것입니다.

알고랜드는 모든 프로세스를 빠르게 처리하며 위조 불가능한 상태로 확정합니다. 포크리스 블록체인은 지연 시간이 짧고 속도가 빠르며, 탁월한 수준의 보안까지 보장해줍니다. NFT에 꼭 필요한 요소를 갖추었다고 볼 수 있습니다.

기업과 개인은 알고랜드 표준 자산(ASA) 프레임워크를 통해 NFT를 만들 수 있습니다. 즉, 레이어 1 네트워크의 장점을 모두 누릴 수 있다는 뜻입니다.


0 개 댓글

답장을 남겨주세요