55 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			55 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 
								 | 
							
								import {Buffer} from 'buffer';
							 | 
						||
| 
								 | 
							
								import nacl from 'tweetnacl';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import {
							 | 
						||
| 
								 | 
							
								  Connection,
							 | 
						||
| 
								 | 
							
								  Keypair,
							 | 
						||
| 
								 | 
							
								  sendAndConfirmTransaction,
							 | 
						||
| 
								 | 
							
								  LAMPORTS_PER_SOL,
							 | 
						||
| 
								 | 
							
								  Transaction,
							 | 
						||
| 
								 | 
							
								  Ed25519Program,
							 | 
						||
| 
								 | 
							
								} from '../src';
							 | 
						||
| 
								 | 
							
								import {url} from './url';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if (process.env.TEST_LIVE) {
							 | 
						||
| 
								 | 
							
								  describe('ed25519', () => {
							 | 
						||
| 
								 | 
							
								    const keypair = Keypair.generate();
							 | 
						||
| 
								 | 
							
								    const privateKey = keypair.secretKey;
							 | 
						||
| 
								 | 
							
								    const publicKey = keypair.publicKey.toBytes();
							 | 
						||
| 
								 | 
							
								    const from = Keypair.generate();
							 | 
						||
| 
								 | 
							
								    const connection = new Connection(url, 'confirmed');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    before(async function () {
							 | 
						||
| 
								 | 
							
								      await connection.confirmTransaction(
							 | 
						||
| 
								 | 
							
								        await connection.requestAirdrop(from.publicKey, 10 * LAMPORTS_PER_SOL),
							 | 
						||
| 
								 | 
							
								      );
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('create ed25519 instruction', async () => {
							 | 
						||
| 
								 | 
							
								      const message = Buffer.from('string address');
							 | 
						||
| 
								 | 
							
								      const signature = nacl.sign.detached(message, privateKey);
							 | 
						||
| 
								 | 
							
								      const transaction = new Transaction().add(
							 | 
						||
| 
								 | 
							
								        Ed25519Program.createInstructionWithPublicKey({
							 | 
						||
| 
								 | 
							
								          publicKey,
							 | 
						||
| 
								 | 
							
								          message,
							 | 
						||
| 
								 | 
							
								          signature,
							 | 
						||
| 
								 | 
							
								        }),
							 | 
						||
| 
								 | 
							
								      );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      await sendAndConfirmTransaction(connection, transaction, [from]);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('create ed25519 instruction with private key', async () => {
							 | 
						||
| 
								 | 
							
								      const message = Buffer.from('private key');
							 | 
						||
| 
								 | 
							
								      const transaction = new Transaction().add(
							 | 
						||
| 
								 | 
							
								        Ed25519Program.createInstructionWithPrivateKey({
							 | 
						||
| 
								 | 
							
								          privateKey,
							 | 
						||
| 
								 | 
							
								          message,
							 | 
						||
| 
								 | 
							
								        }),
							 | 
						||
| 
								 | 
							
								      );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      await sendAndConfirmTransaction(connection, transaction, [from]);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								}
							 |